doufang2023 2018-08-17 15:15
浏览 432

Swoole将websocket数据从服务器发送到客户端

Hi all!

I use swoole for WebSockets.

I create clietn part:

<script>
    var ws = new WebSocket('ws://site.ll:9502/?user=tester01');
    ws.onmessage = function(evt) { console.log(evt.data); };

    ws.onopen = function (event) {
        ws.send('test');
    }
</script>

Create WebServer part:

$server = new swoole_websocket_server("127.0.0.1", 9502);

$server->on("start", function ($server) {
    echo "Swoole http server is started at http://127.0.0.1:9502
";
});

$server->on('open', function($server, $req) {
    echo "connection open: {$req->fd}
";
});

$server->on('message', function($server, $frame) {
    echo "received message: {$frame->data}
";
    $server->push($frame->fd, json_encode(["hello", "world"]));
});

$server->on('close', function($server, $fd) {
    echo "connection close: {$fd}
";
});

$server->start();

Create send from server part:

$client = new swoole_client(SWOOLE_SOCK_TCP);
if (!$client->connect('127.0.0.1', 9502, -1)) {
    exit("connect failed. Error: {$client->errCode}
");
}
$client->send("hello world
");
echo $client->recv();
$client->close();

I trying to create TCP server inside WebSocket server, just adding next part inside "on start" callback:

$server2 = new swoole_server("127.0.0.1", 9503);
$server2->on('connect', function ($server2, $fd){
    echo "connection open: {$fd}
";
});
$server2->on('receive', function ($server2, $fd, $from_id, $data) {
    $server2->send($fd, "Swoole: {$data}");
    $server2->close($fd);
});
$server2->on('close', function ($server2, $fd) {
    echo "connection close: {$fd}
";
});
$server2->start();

But Just receive an error:

Swoole\Server::__construct(): eventLoop has already been created. unable to create swoole_server.

I need to send data from server to client. How can I do this? In workerman library I doing next: https://github.com/Shkarbatov/WebSocketPHPWorkerman/blob/master/worker.php

  • 写回答

2条回答 默认 最新

  • dongpengyu1363 2018-08-22 10:37
    关注

    Upload working result on github: https://github.com/Shkarbatov/WebSocketPHPSwoole

    评论

报告相同问题?

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办