【发布时间】:2011-11-21 21:41:09
【问题描述】:
当我启动我的 node.js 服务器并连接客户端时,我能够从客户端 (socket.emit) 发送请求并获得响应 (socket.on('rentsAround'....))。但是当我第二次连接时,客户端可以发送,但服务器无法发送或发出。所以我必须再次重新启动服务器。我知道它按预期工作,但不知何故我的理解在某个地方是错误的......请有人指出。
客户端: ========
var socket = new io.Socket();
socket = io.connect();
socket.on('rentsAround', function(data){
registration.handleRentsAround(data);
});
socket.on('locationDetailsRes', function(data){
registration.handleRentsAround(data);
});
socket.on('connect', function(data){
alert('inside connect on client side');
});
socket.on('disconnect', function(){
// do something, if you want to.
});
.............
socket.emit("searchRent", {"lat":lat, "lng":lng});
服务器端: ========
socket.sockets.on('connection', function(client){
client.on('searchRent', function(msg){
console.log('inside on connection');
// do something and reply back
client.emit('rentsAround',{"totalRents":docs.length, "rents":docs});
});
client.on('disconnect', function(){
sys.puts("client disconnect");
mongoose.disconnect();
});
【问题讨论】:
-
我还没有真正涉足 sockets.io,但据我所知,您并没有关闭连接并收听连接事件。从理论上讲,您的第一次连接不会导致服务器响应并且后续消息实际上不会触发该事件吗?
-
很抱歉没有提供完整的代码。但我确实在客户端和服务器端都断开连接..更新有问题的代码..
-
在回复您的查询时遇到了问题。实际上套接字代码很好..在服务器端断开连接时,我也断开了数据库连接,这造成了问题。谢谢你的指点!!
-
我无法明确回答您的问题,因为您还没有包括第二次致电
connect。如果需要,请在 gist.github.com 或同等网站上发布更多代码,并在您的问题中包含链接。
标签: node.js websocket express socket.io