socket.io 客户端未从服务器接收 io.emit(使用 redis 适配器)
socket.io client not receiving io.emit from server ( using redis adapter )
最近更新到 1.4.5 时出现了一个问题。 (这在过去 2 年一直有效)。因此,当我向服务器发送 client-msg
时,服务器会收到消息,然后应该将消息发送回所有连接的套接字(包括它自己)。我现在遇到的问题是我无法再向所有套接字发送消息。如果我将 io.emit 更改为 socket.emit 我会收到 server-response
就好了,但当然,这仅适用于那个插座。我什至去了(稀疏的)socket.io 文档并尝试使用发射器库但没有任何运气。我错过了什么?
服务器端:
var redisPort = 6379
var io = require('socket.io');
var redisAdapter = require('socket.io-redis');
var emitter = require('socket.io-emitter')( { host: 'localhost' , port : redisPort } );//6379
io = io.listen( httpServer ); //express server
io.adapter( redisAdapter({ host: 'localhost' , port : redisPort }) );//6379
io.on('connection', function( socket ){
socket.on('client-msg', function( data ){
var msgObject = { content : '' , status : 0 };
if( data && data.content ){
msgObject.content = data.content;
msgObject.status = 1;
}
io.emit('server-response', msgObject );//doesn't work ( noone gets the data )
emitter.emit('server-response', msgObject ); //doesn't work ( noone gets the data )
socket.emit( 'server-response', msgObject );//works ( just the one socket gets the data )
});
socket.on('disconnect', function( data ) {
//do some stuff unrelated to emitting
});
});
客户端:
var socketio = io.connect( window.location.origin , { transports : ['websocket'] } );
socketio.emit("client-msg" , { content : msg });
socketio.on("server-response", function( data ) {
if( data.status == 1 ){
displayTheMessage( data );
}
});
在 运行 调试和在线搜索类似错误后,我发现了这个 post:https://github.com/socketio/socket.io/issues/2378
原来我不是 运行 socket.io 的兼容版本,socket.io-redis 在 posting 时是 socket.io v1 .4.4 和 socket.io-redis 1.0.0
最近更新到 1.4.5 时出现了一个问题。 (这在过去 2 年一直有效)。因此,当我向服务器发送 client-msg
时,服务器会收到消息,然后应该将消息发送回所有连接的套接字(包括它自己)。我现在遇到的问题是我无法再向所有套接字发送消息。如果我将 io.emit 更改为 socket.emit 我会收到 server-response
就好了,但当然,这仅适用于那个插座。我什至去了(稀疏的)socket.io 文档并尝试使用发射器库但没有任何运气。我错过了什么?
服务器端:
var redisPort = 6379
var io = require('socket.io');
var redisAdapter = require('socket.io-redis');
var emitter = require('socket.io-emitter')( { host: 'localhost' , port : redisPort } );//6379
io = io.listen( httpServer ); //express server
io.adapter( redisAdapter({ host: 'localhost' , port : redisPort }) );//6379
io.on('connection', function( socket ){
socket.on('client-msg', function( data ){
var msgObject = { content : '' , status : 0 };
if( data && data.content ){
msgObject.content = data.content;
msgObject.status = 1;
}
io.emit('server-response', msgObject );//doesn't work ( noone gets the data )
emitter.emit('server-response', msgObject ); //doesn't work ( noone gets the data )
socket.emit( 'server-response', msgObject );//works ( just the one socket gets the data )
});
socket.on('disconnect', function( data ) {
//do some stuff unrelated to emitting
});
});
客户端:
var socketio = io.connect( window.location.origin , { transports : ['websocket'] } );
socketio.emit("client-msg" , { content : msg });
socketio.on("server-response", function( data ) {
if( data.status == 1 ){
displayTheMessage( data );
}
});
在 运行 调试和在线搜索类似错误后,我发现了这个 post:https://github.com/socketio/socket.io/issues/2378
原来我不是 运行 socket.io 的兼容版本,socket.io-redis 在 posting 时是 socket.io v1 .4.4 和 socket.io-redis 1.0.0