Firefox Nodejs Websocket

时间:2012-10-10 15:50:15

标签: javascript html node.js websocket chat

我正在使用Aurora 17,Chrome 22和Firefox 16,我正在尝试创建一个简单的聊天应用。我使用的是Node 0.8.9。

Firefox收到的错误是无法连接错误

   Firefox can't establish a connection to the server at ws://localhost/.

我也尝试了端口,它有相同的消息

Firefox can't establish a connection to the server at ws://localhost:4444/.

这是我的代码:

服务器代码:

var http = require('http');
var net = require('net');

function onRequest(req, res) {
   // Does enough to render a page and javascript
}
http.createServer(onRequest).listen(4444);

var socket = new net.Socket();
socket.connect(4444, "localhost", function(){
    console.log("Socket Connected");
});

socket.on("message", function(message){
    console.log(message);
});

客户代码:

var WebSocket = window.WebSocket || window.MozWebSocket;

var connection = new WebSocket('ws://localhost:4444');

connection.onopen = function() {
    // Never runs
    alert("This never runs :(")
}

connection.onerror = function(error) {
    // Always runs here
    console.log(error)
}

我从服务器上的日志语句获得Socket连接的输出,但Firefox无法连接到套接字。

在Chrome上,没有错误,但“onopen”永远不会被触发。使用connection.send(“消息”)不会向服务器发送任何内容并返回false。

1 个答案:

答案 0 :(得分:3)

您正在服务器代码中创建一个普通的TCP客户端套接字并将其连接到您的HTTP服务器。这与创建浏览器可以连接的WebSocket服务器完全不同。使用为此目的设计的库(socket.io是非常常用的,因为当浏览器不支持WebSockets时它可以回退到备用传输)。