swoole websocket_server 聊天室--群聊

发布时间 2023-04-03 17:22:17作者: xyz叶子

 

centos7  php7.2 swoole4.3 nginx1.8 

websocket_server 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
  
$server new Swoole\WebSocket\Server("0.0.0.0", 9502);
 
$server->on('open'function (Swoole\WebSocket\Server $server$request) {
    echo "server: handshake success with fd{$request->fd}\n";
});
 
$server->on('message'function (Swoole\WebSocket\Server $server$frame) {
    echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n";
    //$server->push($frame->fd, $frame->data);
    foreach ($server->connections as $k => $v) {
        $server->push($v"会员".$frame->fd.":".$frame->data);
    }
 
});
 
$server->on('close'function ($ser$fd) {
    echo "client {$fd} closed\n";
});
 
$server->start();
 
 
?>

  websocket.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<!DOCTYPE html>
<html lang="en">
<meta charset="UTF-8">
<head>
    <style>
        *{
            margin:0px;
            padding:0px;
        }
    </style>
</head>
  
<body>
    <div style="margin-left:400px">
        <div style="border:1px solid;width: 600px;height: 500px;">
            <div id="msgArea" style="width:100%;height: 100%;text-align:start;resize: none;font-family: 微软雅黑;font-size: 20px;overflow-y: scroll"></div>
        </div>
        <div style="border:1px solid;width: 600px;height: 200px;">
            <div style="width:100%;height: 100%;">
                <textarea id="userMsg" style="width:100%;height: 100%;text-align:start;resize: none;font-family: 微软雅黑;font-size: 20px;"></textarea>
            </div>
        </div>
        <div style="border:1px solid;width: 600px;height: 25px;">
            <button style="float: right;" onclick="sendMsg()">发送</button>
        </div>
    </div>
</body>
  
</html>
<script src="http://bbc.weeton.cn/jquery-1.8.1.min.js"></script>
<script>
    var ws;
    $(function(){
        link();
    })
  
    function link () {
        ws = new WebSocket("ws://106.13.8.114:9502");//连接服务器
        ws.onopen = function(event){
            console.log(event);
            alert('连接了');
        };
        ws.onmessage = function (event) {
            var msg = "<p>"+event.data+"</p>";
            $("#msgArea").append(msg);
        }
        ws.onclose = function(event){alert("已经与服务器断开连接\r\n当前连接状态:"+this.readyState);};
  
        ws.onerror = function(event){alert("WebSocket异常!");};
    }
  
    function sendMsg(){
        var msg = $("#userMsg").val();
        ws.send(msg);
    }
</script>