[英]Problems with emitting to all clients with socket.io
var io = require('socket.io').listen(server1);
io.on('connection', function(io){
socket_call_data = function(some,data){
io.emit("new_peer_data", result);
}
io.on('event', function(data){
//doing stuff
socket_call_data(some,data);
});
});
這是我當前的代碼,問題是io.emit
(在socket_call_data函數中)似乎僅向連接的用戶發出。 因此,在閱讀后,我使用了io.broadcast.emit
。 這很好用,但是它不包括連接的用戶-我也希望向其發送數據。 所以,最后我來了解有關io.sockets.emit
,據稱它可以將其發送給所有客戶端。 但是,相反,我得到了錯誤:
Missing error handler on `socket`.
TypeError: Cannot call method 'emit' of undefined
at socket_call_data (/var/www/html/live_nodejs/handle.js:47:20)
好吧 套接字 .emit未定義...
我怎么了?
謝謝
當用戶連接時,您似乎正在用單個套接字覆蓋io
變量。 將connection
事件上的io
arg改為socket
:
var io = require('socket.io').listen(server1);
io.on('connection', function(socket){
socket_call_data = function(some,data){
io.emit("new_peer_data", result);
}
socket.on('event', function(data){
//doing stuff
socket_call_data(some,data);
});
});
然后io.emit()
應該發出到所有套接字。
發生的事情是您正在函數中傳遞io
io.on('connection', function(io){
//Your Code here
});
因此,全局io
和您在函數內部傳遞的io
變得模棱兩可。 您所需要做的就是將函數內部傳遞的io
更改為其他變量,例如socket
或其他內容。
io.on('connection', function(socket){
//Your code here
socket.emit("some event specific to this particular socket");
io.sockets.emit("This event will be broadcasted to everyone connected");
});
這應該可以幫助您。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.