$sender_io->to($to)->emit('new_msg',$data);

足迹

返回的信息来判断是否推送成功,来达到离线目的;目前这个推送是否成功怎么判断

阅读 1806
6个回答

walkor

客户端收到信息后给服务端发一个响应,服务端收到这个响应消息发送成功。

  • 暂无评论
足迹

你好,问下我用web-msg-sender项目,看了他们的DEMO,不知道在哪个方法接收到返回消息的例子

    $inner_http_worker->onMessage = function($http_connection, $data){
                global $uidConnectionMap;
                global $sender_io;
                $sender_io->emit('new_msg', $_POST);
                // http接口返回,如果用户离线socket返回fail
                if($to && !isset($uidConnectionMap)){
                    return $http_connection->send('offline');
                }else{
                    return $http_connection->send('ok');
                }
        return $http_connection->send('fail');
    };
    // 执行监听
    $inner_http_worker->listen();
  • 暂无评论
足迹

uidConnectionMap用这个来判断在线、离线太简陋了,IOS系统无法实现,
目前我想用发送成功还是失败来判断是否是离线还是在线

  • 暂无评论
walkor

https://github.com/walkor/phpsocket.io/tree/master/docs/zh
接收消息参考手册,自定义一个消息,然后客户端emit这个消息

  • 足迹 2018-06-19

    你好,我的意思是服务端如何成功判断客户端接收到我推送的消息的状态

  • walkor 2018-06-19

    客户端emit一个消息告诉服务端

  • 足迹 2018-06-19

    你好,客户端通过emit这个方法,返回给服务器么,那服务器端在哪里接收这个状态信息

    <script>
    // 连接服务端
    var socket = io('http://127.0.0.1:3120');
    // 触发服务端的chat message事件
    socket.emit('chat message', '这个是消息内容...');

  • 足迹 2018-06-19

    你好,能给我一样样例,关于服务器端推送到客户端后,客户端发给服务器端是否层的样例吗

  • 足迹 2018-06-19

    你好,我已经通过web-msg-sender的样例看到里客户端推送到服务器的代码了,麻烦了

walkor
<script>
    $(document).ready(function () {
        // 连接服务端
        var socket = io('http://'+document.domain+':2120');
        // 连接后登录
        socket.on('connect', function(){
            socket.emit('login', uid);
        });
        // 后端推送来消息时
       socket.on('new_msg', function(msg){

             // ====== 给服务端回应 ======
            socket.emit('ack', '回应内容');

             $('#content').html('收到消息:'+msg);
             $('.notification.sticky').notify();
        });
        // 后端推送来在线数据时
        socket.on('update_online_count', function(online_stat){
            $('#online_box').html(online_stat);
        });
    });
</script>

    // PHPSocketIO服务
    $sender_io = new SocketIO(2120);
    // 客户端发起连接事件时,设置连接socket的各种事件回调
    $sender_io->on('connection', function($socket){
        // ======这里接收客户端的回应 =======
        $socket->on('ack', function($some_thing){
            // $some_thing是客户端回应的内容
        });
        // 当客户端发来登录事件时触发
        $socket->on('login', ......
    });

例子,其实就是手册那点东西,ack是自定义消息类型,可以是任意的字符串

  • 暂无评论
足迹

你好,APP应用关闭后,我重新打开APP获取离线数据,
但是这个方法好像没重新执行
socket.on('connect', function(){
socket.emit('login', userid);
});

  • 暂无评论