首页
下载
文档
社区
视频
捐赠
源代码
赞助商
AOT 编译器
AI 助理
商业产品
PHP AOT 原生编译器
Swoole-Compiler 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
WebSocket的Server和Client的Sample 问题
我是Swoole的初学者,考虑用它来完成一个游戏大厅的功能, 我做了一个学习的例子, TesServer.php {{{ <?php echo "before setup server."; $serv = new swoole_websocket_server("127.0.0.1", 9502); echo "completed.\n"; $serv->on('Open', function(swoole_websocket_server $server, swoole_http_request $req) { echo "connection open: ".$req->fd; }); $serv->on('Message', function(swoole_websocket_server $server, swoole_websocket_frame $frame) { echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n"; // $server->push($frame->fd, "this is server"); // echo "message: ".$frame->data; $server->push($frame->fd, json_encode(["hello", "world"])); }); $serv->on('Close', function($server, $fd) { echo "connection close: ".$fd; }); echo "enter loop.\n"; $serv->start(); ?> }}} 一个Client的例子 TestClient.php {{{ <?php $client = new swoole_client(SWOOLE_SOCK_TCP | SWOOLE_KEEP); echo "before connect."; if (!$client->connect('127.0.0.1', 9502, -1)) { exit("connect failed. Error: {$client->errCode}\n"); } echo "connected.\n"; echo "send msessage.\n"; $client->send("hello world\n"); echo "recv message="; echo $client->recv(); echo "before close....."; $client->close(); echo "closed"; ?> }}} 但是执行以后,Server那里的调试信息,就只执行到enter loop,看不到有客户端连接进来。 而Clien侧的调试信息,则是连接成功,发送成功,停在收取信息那里. 哪位Swoole高手能够指点一下? 是不是Client侧的连接方式不对? 不该用 swoole_client?
发布于9年前 · 1 次浏览 · 来自
提问
n
nanyu
我是Swoole的初学者,考虑用它来完成一个游戏大厅的功能, 我做了一个学习的例子, TesServer.php {{{ <?php echo "before setup server."; $serv = new swoole_websocket_server("127.0.0.1", 9502); echo "completed.\n"; $serv->on('Open', function(swoole_websocket_server $server, swoole_http_request $req) { echo "connection open: ".$req->fd; }); $serv->on('Message', function(swoole_websocket_server $server, swoole_websocket_frame $frame) { echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n"; // $server->push($frame->fd, "this is server"); // echo "message: ".$frame->data; $server->push($frame->fd, json_encode(["hello", "world"])); }); $serv->on('Close', function($server, $fd) { echo "connection close: ".$fd; }); echo "enter loop.\n"; $serv->start(); ?> }}} 一个Client的例子 TestClient.php {{{ <?php $client = new swoole_client(SWOOLE_SOCK_TCP | SWOOLE_KEEP); echo "before connect."; if (!$client->connect('127.0.0.1', 9502, -1)) { exit("connect failed. Error: {$client->errCode}\n"); } echo "connected.\n"; echo "send msessage.\n"; $client->send("hello world\n"); echo "recv message="; echo $client->recv(); echo "before close....."; $client->close(); echo "closed"; ?> }}} 但是执行以后,Server那里的调试信息,就只执行到enter loop,看不到有客户端连接进来。 而Clien侧的调试信息,则是连接成功,发送成功,停在收取信息那里. 哪位Swoole高手能够指点一下? 是不是Client侧的连接方式不对? 不该用 swoole_client?
赞
0
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
登录
后参与评论
评论
2017-04-21
g
gujiji
参照swoole下面Example的源代码,用WebSocketClient的类就可以了。 {{{ <?php require __DIR__ . "/WebSocketClient.php"; $client = new WebSocketClient("127.0.0.1",9502); echo "connect......"; if (!$client->connect()) { exit("connect
赞
0
回复
2018-09-30
洋
洋
PHP Fatal error: Class 'Swoole\Http\WebSocketParser'
赞
0
回复