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