首页 Order Swoole4 正文

Swoole4 WebSocket 服务器

金鹏头像 金鹏 Swoole4 2021-12-25 16:12:46 0 412
导读:程序代码ws_server.php//创建WebSocket Server对象,监听0.0.0.0:9502端口 $ws = new&n...

程序代码

ws_server.php

//创建WebSocket Server对象,监听0.0.0.0:9502端口 
$ws = new Swoole\WebSocket\Server('0.0.0.0', 9502); 

//监听WebSocket连接打开事件 
$ws->on('Open', function ($ws, $request) 
{     
    $ws->push($request->fd, "hello, welcome\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();
  • 客户端向服务器端发送信息时,服务器端触发 onMessage 事件回调

  • 服务器端可以调用 $server->push() 向某个客户端(使用 $fd 标识符)发送消息

运行程序

php ws_server.php

可以使用 Chrome 浏览器进行测试,JS 代码为:

var wsServer = 'ws://127.0.0.1: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); 
}; 

websocket.onerror = function (evt, e) 
{     
    console.log('Error occured: ' + evt.data); 
};

Comet

WebSocket 服务器除了提供 WebSocket 功能之外,实际上也可以处理 HTTP 长连接。只需要增加 onRequest 事件监听即可实现 Comet 方案 HTTP 长轮询。

详细使用方法参考 Swoole\WebSocket

本文地址:https://www.jinpeng.work/?id=63
若非特殊说明,文章均属本站原创,转载请注明原链接。
广告3

欢迎 发表评论:

  • 请填写验证码

日历

«    2025年4月    »
123456
78910111213
14151617181920
21222324252627
282930

控制面板

您好,欢迎到访网站!
  查看权限
广告2

退出请按Esc键