NodeJS可以正常使用IE浏览器,但Chrome,Firefox和Opera不稳定

我正在使用nodejs和socket.io在聊天系统上工作。 到目前为止,我的应用程序完全适用于Internet Explorer 10,但大多数情况下,我无法在Firefox或Chrome或Opera上发送消息(但是我仍然可以读取Chrome / Firefox / Opera中的IE发送的消息)。 我所有的浏览器都更新到最新版本,没有任何插件/扩展。 我也尝试了几个不同的自由港,但没有任何结果。 我正在使用Windows 7环境,我所有的testing都是在本地完成的。

我不知道什么地方出了问题,在过去的几个小时里一直在挠头,却什么都没有想到。 我是新的node.js所以请帮助!

编辑:我试图通过使用io.set('transports',['websocket'])强制传输到websocket; 现在IE停止工作,所以它似乎之前的原因IE浏览器的工作是socket.io强制IE浏览器使用xhr轮询,而不是websocket。

我的代码如下(取自http://code.tutsplus.com/tutorials/real-time-chat-with-nodejs-socketio-and-expressjs-net-31708 )

服务器index.js

var express = require("express"); var app = express(); var port = 3700; app.set('views', __dirname + '/tpl'); app.set('view engine', "jade"); app.engine('jade', require('jade').__express); app.get("/", function(req, res){ res.render("page"); }); app.use(express.static(__dirname + '/public')); var io = require('socket.io').listen(app.listen(port)); console.log(port); console.log(io); io.sockets.on('connection', function (socket) { console.log("connect"); socket.emit('message', { message: 'welcome to the chat !' }); socket.on('send', function (data) { io.sockets.emit('message', data); }); }); console.log("Listening on port " + port); 

风景

  doctype html head title= "Real time web chat" script(src='/chat.js') script(src='/socket.io/socket.io.js') body #content(style='width: 500px; height: 300px; margin: 0 0 20px 0; border: solid 1px #999; overflow-y: scroll;') 

.controls | 名称:input#name(style ='width:350px;')br input#field(style ='width:350px;')input#send(type ='button',value ='send')

Chat.js

  window.onload = function() { var messages = []; var socket = io.connect('http://localhost:3700'); var field = document.getElementById("field"); var sendButton = document.getElementById("send"); var content = document.getElementById("content"); var name = document.getElementById("name"); socket.on('message', function (data) { if(data.message) { messages.push(data); var html = ''; for(var i=0; i<messages.length; i++) { html += '<b>' + (messages[i].username ? messages[i].username : 'Server') + ': </b>'; html += messages[i].message + '<br />'; } content.innerHTML = html; } else { console.log("There is a problem:", data); } }); sendButton.onclick = function() { if(name.value == "") { alert("Please type your name!"); } else { var text = field.value; socket.emit('send', { message: text, username: name.value }); } }; 

}

编辑:根据类似的问题Socket.io无法在Firefox和Chrome上工作,通过在chat.js中添加下面的代码来修复它。 我做到了,它现在在Chrome / Firefox / Opera上工作,但它迫使浏览器使用长池/ ajax而不是websocket,我希望我的浏览器使用websocket(Chrome / Firefox应该能够支持WebSocket比IE我认为?)

  io.configure('development', function(){ io.set('transports', ['xhr-polling']); });