前端事件触发:
socket.send('getInfoaaaa',uid);
socket.on('getInfoaaaReturn', function(msg){
alert(msg);
});
服务端事件:
$socket->on('getInfoaaaa',function($uid)use($socket){
$socket-> emit('getInfoaaaReturn',$uid);
});
开启服务端监听之后 前端没有收到结果,也没有任务的报错,之前写的都是可以的,不知道为啥。。。求大神指教。
把代码贴全
前端:
服务端:
里面还有其他的事件,结构是 附件那样子的,可以正常使用,但是上面的那个不着调为什么就不能用。。
客户端与服务端链接建立成功前无法给服务端emit事件,客户端与服务端建立链接成功后会触发connect事件,在connect事件触发后才能emit。
socket.emit('getInfoaaaa',uid);
执行的时候并没触发connect事件,也就是说这时候与服务端还没建立链接,服务端当然收不到任何数据。
你可以参考上面官网demo源码向服务端emit login事件部分写法,写在connect事件的里面,也就是connect事件触发后执行emit才行。
我之前有五六个事件都是按照附件中的那样写的 但是 可以正常使用吖。。
但如果写到connect事件里面,当连接服务端成功的时候就直接触发了啊,但 我需要用户的行为操作去触发这个事件,我也有像附件中那样写的五个事件,可以正常使用,
那如果我之前的写法是错误的,我需要用户操作触发事件时,这个怎么写?
上面说的是参考啊,写在connect 里只是个参考,主要用意还是提示你要想emit成功必须保证connect事件已经触发,也就是链接已经建立。
比如像你截图里socket.emit('buyGift', $uid, 790, 2, 20);是写在click事件里的,用户点击的时候已经触发connect事件了,也就是用户点击的时候链接已经建立了。
但是页面js一加载就触发socket.emit('getInfoaaaa',uid); 肯定是不行的,这时候基本可以确定connect事件没触发,链接还没建立。
还真是。。谢大牛,我里面还有一个那种直接触发的 ,但是 可以使用。奇怪。。上面的问题把它放到 click事件中就可以了。。