941470
最近做了一款聊天室的app,用socket io来做长连接,一般是监听事件,然后进行相应的处理,但是如果现在想往客户端主动推送一些消息的话,应该怎么来处理呢???有没有相关的参考或者例子或者思路都可以,谢谢!!!
最近做了一款聊天室的app,用socket io来做长连接,一般是监听事件,然后进行相应的处理,但是如果现在想往客户端主动推送一些消息的话,应该怎么来处理呢???有没有相关的参考或者例子或者思路都可以,谢谢!!!
看看这个例子 http://websocketd.com/
//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})
});
服务端定义事件,客户端订阅就可以了
分为向房间推消息和向单个socket连接推消息
向房间: socket.to(roomId).emit('message', messageData);
向个人: io.to(socketId).emit('message', messageData);
可以看看我的聊天室项目: https://github.com/yinxin630/blog/issues/3
@tangchi695 你说的意思我明白,就是在socket连接下发消息是吧,我现在是在定时任务里面,需要向聊天群里发送消息,应该怎么样来处理呢??有点晕!!!
可以参考下我开放的一个项目,有socket.io的应用。 https://github.com/sylarmeng/wecatering
直接通过客户端产生的连接对象,用emit方法发数据就行了啊。要给谁发,就用谁的连接对象。
来自酷炫的 CNodeMD
你需要仔细了解下socket房间的概念 还需要了解socket客户端的概念