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

0

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

已邀请:

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这个消息

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);
});

要回复问题请先登录注册