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