准备工作、需要完成以下步骤

第一步、打开服务器,进入宝塔,点击文件,新建.php文件

docker 宝塔容器 宝塔websocket_swoole

docker 宝塔容器 宝塔websocket_php_02

这里我们要用到Swoole 文档,点击进入swoole文档页面,复制粘贴程序代码到我们刚刚服务器新建的.php文件内部,记得保存吆!

docker 宝塔容器 宝塔websocket_php_03

第二步、找个html网页进行前后端交互连接,这里我给大家提供一个我常用的,你们随意,想要好看的页面可以官网查询,或自己优化......

样式:

docker 宝塔容器 宝塔websocket_php_04

代码:


<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>WebSocket测试</title>
    <script language="javascript"type="text/javascript" src="jquery-1.12.0.min.js">
    </script>
</head>
<body>
<h2>WebSocket Test</h2>
<br/><br/>
<textarea id="message" style="overflow-x:hidden" rows="10" cols="50"></textarea>
<p id="output"></p>
昵称:<input type="text" id="name" size="5" value="游客"/>
<textarea id="content" ></textarea>
<button οnclick="speak_to_all()">发送</button>
</body>
<script language="javascript"type="text/javascript">
    var wsUri ="ws://43.139.110.32:9505/";
    var output;
    function init() {
        output = document.getElementById("output");
        testWebSocket();
    }
    function testWebSocket() {
        websocket = new WebSocket(wsUri);
        websocket.onopen = function(evt) {
            onOpen(evt)
        };
        websocket.onclose = function(evt) {
            onClose(evt)
        };
        websocket.onmessage = function(evt) {
            onMessage(evt)
        };
        websocket.onerror = function(evt) {
            onError(evt)
        };
    }
    function get_speak_msg(){
        var name=document.getElementById("name").value;
        var speak=document.getElementById("content").value;
        var json_msg='{"name":"'+name+'","speak":\"'+speak+'"}';
        return json_msg;
    }
    function pack_msg(type,msg){
        return '{"type":"'+type+'","msg":'+msg+'}';
    }
    function onOpen(evt) {
        append_speak("已经联通服务器.........");
        speak_msg=get_speak_msg();
        send_msg=pack_msg("login",speak_msg);
        doSend(send_msg);
    }
    function onClose(evt) {
        append_speak("俺老孙去也!");
    }
    function onMessage(evt) {
        append_speak(evt.data);
    }
    function onError(evt) {
        alert(evt.data);
    }
    function doSend(message) {
        websocket.send(message);
    }
    function append_speak(new_msg){
        document.getElementById("message").value=document.getElementById("message").value+new_msg+"\n";
        document.getElementById('message').scrollTop = document.getElementById('message').scrollHeight;
    }
    function speak_to_all(){
        send_msg=pack_msg("speak",get_speak_msg());
        if(document.getElementById("content").value==""){
            return;
        }
        doSend(send_msg);
        document.getElementById("content").value="";
    }
    init();
</script>
</html>


到这里准备工作已完毕!,开始实现我们的效果了。

 首先打开控制面板,切换到我们刚刚新建.php文件的www/wwwroot下面ls查看我们刚才已经复制好swoole代码的文件是否存在(不存在说明你放错目录了)

 

docker 宝塔容器 宝塔websocket_websocket_05

  到这里我们别着急运行,先解释一下需要的配置点,首先在我们刚刚粘贴的swoole代码内部进行修改

 

docker 宝塔容器 宝塔websocket_docker 宝塔容器_06

这里的'0.0.0.0'代表开放所有ip,默认即可,后面的9502代表端口,这里需要我们去宝塔的控制面板开放端口

docker 宝塔容器 宝塔websocket_网络协议_07

接下来是配置客户端网页代码,这里我只粘贴一部分进行解释,完整代码请往上预览,43.139.110.32代表我的ip,你们可切换为自己的,后面的9505使我们刚刚放行的的端口,前后端要想连接就靠这个端口了,如果端口错误将会无法连接到服务器

docker 宝塔容器 宝塔websocket_swoole_08

 配置完毕!接着宝塔面板输入php 1.php运行,1.php是我随意命名的,你们可选择自己命名的.php文件,运行以后会出现以下效果

docker 宝塔容器 宝塔websocket_websocket_09

这个时候我们点击客户端文件,我比较懒省事直接以html结尾的文件放在了桌面,点击运行即可,你们可放在服务器,通过视图进行查看效果,进入以后效果如下

docker 宝塔容器 宝塔websocket_websocket_10

这里上面会提示已经联通服务器,说明通了,可以聊天了,在输入框输入内容,看看有没有效果,

docker 宝塔容器 宝塔websocket_php_11

你在客户端发送的消息,服务端都会显示,这时候你可以结合前后端一起查看效果

到这里简单的聊天服务完成,顺便赠送一个小礼物,如果遇到端口被占用,可进行以下操作

docker 宝塔容器 宝塔websocket_网络协议_12