socket.broadcast.emit socket io
问题描述:
我尝试了socket.io上的示例聊天应用程序,而且工作正常。当我尝试socket.broadcast.emit()函数时,它不起作用。 任何人都可以帮助我解决这个问题吗? 这可能是一个小错误,但我浪费了一小时的时间。socket.broadcast.emit socket io
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function(socket) {
socket.broadcast.emit('New participant connected.'); //DO NOT SEND ANY MESSAGE
socket.on('chat message', function(msg){
io.emit('chat message', msg);
});
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
答
我的猜测是你没有听到“新参与者已连接”。事件在您的客户。
试试这个:
// server
socket.broadcast.emit('broadcast', 'New participant connected.');
// client
socket.on('broadcast', m => console.log('Received broadcast:', m));
+0
谢谢,它就像一个魅力! – user3092999
你怎么测试? AFAIK,'socket.broadcast.emit()'发出一条消息给所有连接的套接字_except_原始的套接字,所以如果你只用一个客户端进行测试,消息就不会显示出来。 – robertklep
我也打开了firefox和chrome(同一时间),'新参与者连接'无处可用。 – user3092999