长连接-消息事件处理

前台消息处理,文件存放在crmeb\services\workerman\chat\ChatHandle.php

客户端

JavaScript 发送消息

webSocket = new WebSocket('wss://www.crmeb.com/msg');

webSocket.onopen = function() {
    alert("连接成功");
    webSocket.send(JSON.stringify({
        type: 'test',
        data: {
            msg: '这是一个测试的消息'
        }
    }));
    alert("给服务端发送一个字符串");
};

webSocket.onmessage = function(e) {
    alert("收到服务端的消息:" + e.data);
}

//发送一个type为status的消息
webSocket.send(JSON.stringify({
    type:"status",
    data: {
        msg: '我的状态改变为上线',
        value: 1
    }
}));

服务端

服务端接口消息并处理,需改文件crmeb\services\workerman\chat\ChatHandle.php


namespace crmeb\services\workerman\chat;

class ChatHandle
{

    //status事件类型处理
    public function status(TcpConnection &$connection, array $res, Response $response)    {
        $data = $res['data'];

        //打印JS发送的data.value
        var_dump($data['value']);

        //获取当前长链接的用户信息
        $connection->user;


        //处理好逻辑使用$response返回数据

        //参数1位返回给前台的消息类型
        //参数2位返回给前台的消息内容
        $response->send('message', ['']);
    }
}

Was this helpful?

0 / 0

发表回复 0