2016-11-09 66 views
0

我尝试了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'); 
}); 
+0

你怎么测试? AFAIK,'socket.broadcast.emit()'发出一条消息给所有连接的套接字_except_原始的套接字,所以如果你只用一个客户端进行测试,消息就不会显示出来。 – robertklep

+0

我也打开了firefox和chrome(同一时间),'新参与者连接'无处可用。 – user3092999

回答

0

我的猜测是你没有听到“新参与者已连接”。事件在您的客户。

试试这个:

// server 
socket.broadcast.emit('broadcast', 'New participant connected.'); 

// client 
socket.on('broadcast', m => console.log('Received broadcast:', m)); 
+0

谢谢,它就像一个魅力! – user3092999