socket io 推送消息的问题
最近做了一款聊天室的app,用socket io来做长连接,一般是监听事件,然后进行相应的处理,但是如果现在想往客户端主动推送一些消息的话,应该怎么来处理呢???有没有相关的参考或者例子或者思路都可以,谢谢!!!
9 回复
你需要仔细了解下socket房间的概念 还需要了解socket客户端的概念
直接通过客户端产生的连接对象,用emit方法发数据就行了啊。要给谁发,就用谁的连接对象。
来自酷炫的 CNodeMD
可以参考下我开放的一个项目,有socket.io的应用。 https://github.com/sylarmeng/wecatering
@tangchi695 你说的意思我明白,就是在socket连接下发消息是吧,我现在是在定时任务里面,需要向聊天群里发送消息,应该怎么样来处理呢??有点晕!!!
服务端定义事件,客户端订阅就可以了
@szluohua 这个订阅,是不是要建立在socket的基础上呢??有没有参考的例子呢
//example1
//发送事件
socket.emit('searchUser', text);
//监听事件
socket.on('searchUser', async text => {
const nin = [socket.request.userId];
return await Controllers.user.findByNameOrUserNameOrAliasName(text, nin);
});
//example2:
//发送带有回调的事件,只需要加callback
socket.emit('searchUser', text, (res)=>{
console.log(res);
});
//监听
socket.on('searchUser', async (text, callback) => {
const nin = [socket.request.userId];
const user = await Controllers.user.findByNameOrUserNameOrAliasName(text, nin);
return callback({user})
});
看看这个例子 http://websocketd.com/