【发布时间】:2015-11-29 20:35:48
【问题描述】:
我有 nodeJS 应用程序,我必须在其中使用 socket.io。在页面的客户端我有这个代码:
var serverBaseUrl = document.href;
var socket = io.connect(serverBaseUrl, {'sync disconnect on unload' : true})
socket.on('connect', function () {
alert("socket connect");
sessionId = (socket.io.engine.id).toString().substr(0, 10);
console.log("socket.io connected : " + sessionId);
});
NodeJS 代码:
var server = http.createServer(app);
var io = require('../service/sockets').startServer(server);
startServer 函数:
io.listen(server).on('connection', handler);
但此代码在 IE 中不会触发(我测试 9 和 11 版本)。
在 Chrome 和其他中它可以完美运行。此外,还有一些有趣的事情:我使用npm start 启动服务器,然后在 IE 中打开一个选项卡并且没有套接字连接,然后我关闭节点应用程序的进程并再次启动它,现在,启动后,IE 触发事件连接我有套接字会话。
任何想法会发生什么?
【问题讨论】:
-
socket连接由客户端发起;您需要分享您的客户端 JS 以获得解决问题的帮助。
-
我的问题第一个代码部分 - 它是客户端上的 JS
-
哦,我明白了。你能分享整个事情吗?您应该在某处有一条线供套接字连接。示例:
var socket = io('http://localhost');。包括相关的 node.js 代码。 -
添加到整个问题
-
我不确定
document.href是什么;它在 Chrome 和 FF 中返回 undefined。尝试做一些调试。你检查过 JS 控制台是否有任何错误?您确定每个浏览器的“serverBaseUrl”是什么吗?能否包含启动套接字的 node.js 代码?
标签: javascript node.js internet-explorer socket.io