我的套接字将连接,但无法接收任一方向的消息。我设置了如下所示的日志记录。在服务器端,我看到正在记录连接,并在页面关闭时记录断开连接。如果我终止服务器,客户端会记录“套接字已断开”。但没有收到任何方向的排放。我做了更多日志记录,并确定客户端套接字的 socket.connected
字段为 false
。
此时我完全不知所措。从字面上看,一旦我建立连接,客户端就会认为其套接字已断开连接,但当我关闭浏览器窗口时,服务器仍然看到它已断开连接。我正在运行 socket.io 1.1.0。感谢您的帮助!
服务器:
io.sockets.on('connection', function(socket) {
logger.info('Socket connected. ID: ' + socket.id);
socket.on('refresh', function() {
logger.info('Refresh received from ID: ' + socket.id);
});
socket.on('disconnect', function() {
logger.info('Disconnect received from ID: ' socket.id);
});
});
客户:
var socket;
$(document).ready(function() {
socket = io.connect('http://localhost');
console.log(socket.connected);
socket.emit('refresh');
socket.on('disconnect', function() {
console.log("Socket disconnected.");
});
});
最佳答案
套接字在io.connect
之后并未立即连接。您必须等待:
var socket;
$(document).ready(function() {
socket = io.connect('http://localhost');
socket.on('connect', function () {
console.log(socket.connected);
socket.emit('refresh');
});
socket.on('disconnect', function() {
console.log("Socket disconnected.");
});
});
更多事件:http://socket.io/docs/client-api/#manager(url:string,-opts:object)
关于node.js - Node Socket.io客户端连接后认为已断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26482206/