首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swoole将websocket数据从服务器发送到客户端

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

Stack Overflow用户
提问于 2018-08-17 15:15:56
回答 2查看 2.1K关注 0票数 0

嗨大家好!

我用swoole来表示WebSockets。

我创建了clietn部分:

代码语言:javascript
复制
<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>

创建WebServer部件:

代码语言:javascript
复制
$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\n";
});

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

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

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

$server->start();

从服务器部分创建发送:

代码语言:javascript
复制
$client = new swoole_client(SWOOLE_SOCK_TCP);
if (!$client->connect('127.0.0.1', 9502, -1)) {
    exit("connect failed. Error: {$client->errCode}\n");
}
$client->send("hello world\n");
echo $client->recv();
$client->close();

我试图在WebSocket服务器中创建TCP服务器,只是在"on“回调中添加下一部分:

代码语言:javascript
复制
$server2 = new swoole_server("127.0.0.1", 9503);
$server2->on('connect', function ($server2, $fd){
    echo "connection open: {$fd}\n";
});
$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}\n";
});
$server2->start();

但只需收到一个错误:

Swoole\Server::__construct():eventLoop已经创建。无法创建swoole_server。

我需要把数据从服务器发送到客户端。我该怎么做?在workerman库中,我接下来要做的是:https://github.com/Shkarbatov/WebSocketPHPWorkerman/blob/master/worker.php

EN

回答 2

Stack Overflow用户

发布于 2018-08-22 10:37:49

在github:https://github.com/Shkarbatov/WebSocketPHPSwoole上上传工作结果

票数 0
EN

Stack Overflow用户

发布于 2018-11-23 07:08:47

您应该使用addListener函数而不是new swoole_server

医生来了:https://www.swoole.co.uk/docs/modules/swoole-server-methods#swoole_server-addlistener

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51898394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档