再问一个关于socket.io 群发信息的问题
发布于 10 年前 作者 hc2014 6439 次浏览 最后一次编辑是 8 年前

我现在的问题就是 多个用户在聊天室.当用户A 发送了消息以后 除了用户A本身意外,其他人都能收到消息,在其他的客户端用户B 发送消息也是如此。 我的server: io.sockets.on(‘connection’, function (socket) { socket.on(‘new message’, function (data) { socket.broadcast.emit(‘new message’, { username: socket.username, message: data }); }); socket.on(‘add user’, function (username) { socket.username = username; console.log(“add user:”+socket.username); }); });

client: <script> var socket = io.connect(‘http://localhost:3000’); socket.emit(‘add user’, getCookie(“username”));

socket.on('new message', function (data) {
	var html='<span>'+data.username+'说:<span>'+data.message+"</br>";
	$("#txt").append(html);
});

function send(){ socket.emit(‘new message’, $("#msg").val()); $("#msg").val(""); }

</script>

是不是那个地方要设置参数之类的?英语不咋地,所以看官方 文档 也没看出个所以然来…

7 回复

问题没解决,帖子不能沉

@lonso 哦,原来是这样。也对,没必要给自己发送消息。那如果我想像包括自己的客户端发送消息 ,有没有对应的方法或者参数设置的呢?

@lonso 我现在在做一个小论坛的demo.回复评论的时候,我现在是这样来做的,当我发送完消息以后,其他客户端都会收到对应的消息,然后输出到页面上。然后自己客户端就直接写对应的消息到页面上去。但是这样的话就有一个问题, 我该如何来判断自己发送的消息是否已经完成并且是正确的呢?

@lonso 英文太烂了,桑不起啊

获得所有的socket对象,然后发送事件,好像是这么做的,io.sockets.emit();

@wuzeru 对的,刚才试了下 这个api是对的。之前一直纠结 之前一直纠结直接用socket对象来发送小心. io.sockets.on(‘connection’, function (socket) { socket.on(‘new message’, function (data) { io.sockets.emit(‘new message’, { username: socket.username, message: data }); }); })

回到顶部