swoole websocket_server 聊天室--群聊
centos7 php7.2 swoole4.3 nginx1.8
websocket_server 代码
<?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
<!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>