【问题标题】:NodeJs, socket.io, IENodeJs, socket.io, IE
【发布时间】: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


【解决方案1】:

问题出在 socket.connect 操作后的大量警报中。所以,顺序是下一个: 1. 警觉 2.socket连接 3. 警觉 4. 提醒

当 delte 3 和 4 警报时 - 我的代码开始工作。不知道为什么,我有人知道 - 请写信给我。

更新

问题出在 console.log 中。如果没有打开开发人员工具,IE 中不存在对象控制台。因此,删除所有 console.log 和所有工作!

【讨论】:

  • alerts() 在错误的位置可能会中断计时并导致超时。您几乎不应该使用alert() 进行调试。使用console.log(),因为它不会导致时间问题。
  • 我在为 IE 编码时不能使用 console.log,因为当我在 IE 中打开开发工具来查看控制台时 - 一切正常!!!
猜你喜欢
  • 2017-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-01
  • 1970-01-01
  • 2021-03-30
  • 2019-05-13
  • 1970-01-01
相关资源
最近更新 更多