swoole websocket伺服器
阿新 • • 發佈:2021-08-10
伺服器端環境
系統環境
uUbuntu 20.04
php版本
PHP 7.4.3
服務檔案 ws_server.php
<?php //建立WebSocket Server物件,監聽0.0.0.0:9501埠 $ws = new Swoole\WebSocket\Server('0.0.0.0', 9501); //監聽WebSocket連線開啟事件 $ws->on('Open', function ($ws, $request) { $ws->push($request->fd, "hello, websocket\n"); }); //監聽WebSocket訊息事件 $ws->on('Message', function ($ws, $frame) { echo "Message: {$frame->data}\n"; $ws->push($frame->fd, "server: {$frame->data}"); }); //監聽WebSocket連線關閉事件 $ws->on('Close', function ($ws, $fd) { echo "client-{$fd} is closed\n"; }); $ws->start();
啟動服務
php ws_server.php
測試
測試檔案
vi web_socket.html
<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>WebSocket測試</title> <script> function initWebSocket(wsUri) { var websocket = new WebSocket(wsUri); websocket.onopen = function(evt) { console.log('連線建立中... '+wsUri); }; websocket.onclose = function(evt) { console.log('連線關閉中...', evt); }; websocket.onmessage = function(evt) { console.log('收到來自服務端的訊息:', evt.data); }; websocket.onerror = function(evt) { console.log('發生錯誤...', evt); }; return websocket; } var websocket = initWebSocket("ws://118.195.173.53:9501"); var msg, i = 0; var loop = setInterval(function(){ msg = "Hello " + (i++); if(websocket.readyState == WebSocket.OPEN) { websocket.send(msg); console.log('已傳送訊息:' + msg); } else { clearInterval(loop); console.log('連線已關閉,拜拜~'); } }, 3000); </script> </head> <body> 請按 F12 開啟控制檯檢視訊息 </body> </html>
瀏覽器web_socket.html
請按 F12 開啟控制檯檢視訊息
注意事項:
1 檢測防火牆是否放開9501埠
2 雲伺服器要開發9501埠
3 server.php監聽的IP 0.0.0.0