swoole调用php方法,swoole怎么异步调用

cff5f0994ebd99c4fee916bca351a4e1.png

swoole怎么异步调用?

Swoole中的异步使用

测试案例:

改写ws_server.php$this->ws->set(

[

'worker_num' => 2,

'task_worker_num' => 2,

]

);

$this->ws->on("open", [$this, 'onOpen']);

$this->ws->on("message", [$this, 'onMessage']);

$this->ws->on("task", [$this, 'onTask']);

$this->ws->on("finish", [$this, 'onFinish']);

$this->ws->on("close", [$this, 'onClose']);

public function onOpen($ws, $request) {

var_dump($request->fd);

}

public function onMessage($ws, $frame) {

echo "ser-push-message:{$frame->data}\n";

$data = [

'task' => 1,

'fd' => $frame->fd,

];

$ws->task($data);

$ws->push($frame->fd, "server-push:".date("Y-m-d H:i:s"));

}

public function onTask($serv, $taskId, $workerId, $data) {

print_r($data);

// 耗时场景 10s

sleep(10);

return "on task finish"; // 告诉worker

}

public function onFinish($serv, $taskId, $data) {

echo "taskId:{$taskId}\n";

echo "finish-data-sucess:{$data}\n";

}

客户端,即ws_client.html,发送信息,服务端的onMessage接受并执行设置数据调用onTask,在onTask中打印数据3秒后返回数据给onFinish,onFinish接受数据并输出。

用户页面:

chuangxiang--测试

var wsUrl = "ws://192.168.0.103:8812";

var websocket = new WebSocket(wsUrl);

//实例对象的onopen属性

websocket.onopen = function(evt) {

websocket.send("Hello chaungxiang");//输出到服务器端,即发送信息

console.log("connected-swoole-success");//输出在页面

}

//实例化 onmessage

websocket.onmessage = function(evt) {

console.log("ws-server-return-data:"+evt.data);

}

//实例化onclose

websocket.onclose = function(evt) {

console.log("close");

}

//实例化onerror

websocket.onerror =function(evt,e) {

console.log("error:"+evt.data);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值