我的套接字将连接但无法接收任何方向的消息。我设置了如下所示的日志记录。在服务器端,我看到记录了连接,并在页面关闭时记录断开连接。如果我终止服务器,客户端会记录“Socket disconnected”。但是没有收到任何方向的排放。我做了一些日志记录,并确定客户端套接字的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.");
});
});
答案 0 :(得分:3)
您需要在自动断开连接后重新连接
socket.on('disconnect', function() {
console.log("Socket disconnected.");
socket.socket.reconnect();
});
答案 1 :(得分:2)
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)
答案 2 :(得分:1)
看起来问题出在socket = io.connect(document.URL);
我尝试通过socket = io();
使用socket.io自动发现,现在我的所有排放都正常工作。