CNode

socket io 推送消息的问题

问答
Qquanpf2481发布于8 年前最后回复8 年前9 回复4112 浏览0 收藏

最近做了一款聊天室的app,用socket io来做长连接,一般是监听事件,然后进行相应的处理,但是如果现在想往客户端主动推送一些消息的话,应该怎么来处理呢???有没有相关的参考或者例子或者思路都可以,谢谢!!!

查看回复

回复 (9)

L
ldcsirtest2012#1·8 年前

你需要仔细了解下socket房间的概念 还需要了解socket客户端的概念

T
tangchi695#2·8 年前

直接通过客户端产生的连接对象,用emit方法发数据就行了啊。要给谁发,就用谁的连接对象。

来自酷炫的 CNodeMD

S
sylarmeng#3·8 年前

可以参考下我开放的一个项目,有socket.io的应用。 https://github.com/sylarmeng/wecatering

Q
quanpf2481#4·8 年前
引用 tangchi695直接通过客户端产生的连接对象,用emit方法发数据就行了啊。要给谁发,就用谁的连接对象。 来自酷炫的 CNodeMD

@tangchi695 你说的意思我明白,就是在socket连接下发消息是吧,我现在是在定时任务里面,需要向聊天群里发送消息,应该怎么样来处理呢??有点晕!!!

Y
yinxin630#5·8 年前

分为向房间推消息和向单个socket连接推消息 向房间: socket.to(roomId).emit('message', messageData); 向个人: io.to(socketId).emit('message', messageData); 可以看看我的聊天室项目: https://github.com/yinxin630/blog/issues/3

S
szluohua#6·8 年前

服务端定义事件,客户端订阅就可以了

Q
quanpf2481#7·8 年前
引用 szluohua服务端定义事件,客户端订阅就可以了

@szluohua 这个订阅,是不是要建立在socket的基础上呢??有没有参考的例子呢

S
szluohua#8·8 年前
引用 quanpf2481@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})
		});
F
FantasyGao#9·8 年前

看看这个例子 http://websocketd.com/

参与回复
登录后即可参与回复。登录