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 |
<?php //创建websocket服务器对象,监听0.0.0.0:9502端口 $ws = new swoole_websocket_server("0.0.0.0", 9502); //监听WebSocket连接打开事件 $ws->on('open', function ($ws, $request) { // var_dump($request->fd, $request->get, $request->server); foreach($ws->connections as $fd) { $ws->push($fd, "你好,有人加入聊天。"); } // $ws->push($request->fd, "你好,有人加入聊天。\n"); }); //监听WebSocket消息事件 $ws->on('message', function ($ws, $frame) { // echo "Message: {$frame->data}\n"; foreach($ws->connections as $fd) { $ws->push($fd, "有人说: {$frame->data}"); } // $ws->push($frame->fd, "server: {$frame->data}"); }); //监听WebSocket连接关闭事件 $ws->on('close', function ($ws, $fd) { echo "client-{$fd} is closed\n"; }); $ws->start(); ?> |
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 |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>websocket</title> </head> <body> 测试一下啊:<input type="text" value="" id="test"> <input type="button" value="发送" id="bt"> <div id="div1"></div> <script> var wsServer = 'ws://192.168.22.228:9502'; var websocket = new WebSocket(wsServer); websocket.onopen = function (evt) { console.log("Connected to WebSocket server."); }; websocket.onclose = function (evt) { console.log("Disconnected"); }; websocket.onmessage = function (evt) { // console.log('Retrieved data from server: ' + evt.data); div1.innerHTML+=evt.data+'<br>'; }; websocket.onerror = function (evt, e) { console.log('Error occured: ' + evt.data); }; var bt = document.getElementById("bt"); var test = document.getElementById("test"); bt.onclick=function(){ websocket.send(test.value); }; </script> </body> </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 |
<?php //创建websocket服务器对象,监听0.0.0.0:9502端口 $ws = new swoole_websocket_server("0.0.0.0", 9502); //设置异步任务的工作进程数量 $ws->set(array('task_worker_num' => 4)); //监听WebSocket连接打开事件 $ws->on('open', function ($ws, $request) { $ws->task("你好,有人加入聊天。"); }); //监听WebSocket消息事件 $ws->on('message', function ($ws, $frame) { $ws->task("有人说: {$frame->data}"); }); //监听WebSocket连接关闭事件 $ws->on('close', function ($ws, $fd) { echo "client-{$fd} is closed\n"; }); //处理异步任务 $ws->on('task', function ($ws, $task_id, $from_id, $data) { foreach ($ws->connections as $fd) { $ws->push($fd, $data); } //finish操作是可选的 $ws->finish("ok"); }); //处理异步任务的结果 $ws->on('finish', function ($ws, $task_id, $data) { echo $data . PHP_EOL; }); $ws->start(); |