0

我正在使用 Aurora 17、Chrome 22 和 Firefox 16,并且正在尝试创建一个简单的聊天应用程序。我正在使用节点 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("a message") 不会向服务器发送任何内容并返回 false。

4

1 回答 1

3

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

于 2012-10-10T16:39:05.437 回答