swoole-example
创建websocket服务对象
1 | $server = new swoole_websocket_server("0.0.0.0", 9501); |
收到消息回调
1 | $server->on('message', function (swoole_websocket_server $server, $frame) { |
关闭连接回调
1 | $server->on('close', function ($ser, $fd) { |
启动服务
1 | $server->start(); |
客户端cli
1 | $longopt = array( |
在命令行执行
1 | php ws_client.php --msg=大家好 |
客户端http
如果你的项目无法使用cli
你可以使用下面的方式:
服务端增加 onRequest事件
1
2
3
4
5
6
7
8
9
10
11
12
13
14$server->on('request', function (swoole_http_request $request, swoole_http_response $response) {
global $server;//调用外部的server
// $server->connections 遍历所有websocket连接用户的fd,给所有用户推送
foreach ($server->connections as $fd) {
echo $request->fd."\n";
//因为自己并不是websocket客户端,所以广播给除自己以外的客户端
if($request->fd != $fd ){
$server->push($fd, $request->get['message']);
}
}
$response->end("ok");
//关闭当前客户端请求,防止下次全员推送时包含非websocket客户端
$server->close($request->fd);
});依赖 pcre库