Node.js和web-socket-js简单客户端服务器无法打开

时间:2011-05-07 22:16:00

标签: javascript node.js websocket ports

我的server.js似乎是正确的..

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, "mysite.com");
console.log('Server running at mysite.com:1337/');

我的客户的肉在下面。

function init() {

  // Connect to Web Socket.
  // Change host/port here to your own Web Socket server.
  ws = new WebSocket("ws://mysite.com:1337");

  // Set event handlers.
  ws.onopen = function() {
    output("onopen");
  };

}

如果我去http://www.mysite.com:1337我正确接收了Hello World!但是,当我尝试使用我的客户端连接,并在Fire bug中调试时,我得到以下输出。

[WebSocket] connected
[WebSocket] request header: GET / HTTP/1.1 Upgrade: WebSocket Connection: Upgrade Host: mysite.com:1337 Origin: http://www.mysite.com Cookie: Sec-WebSocket-Key1: 115 17 p^!x-93 IERc16 7 Sec-WebSocket-Key2: 1 75 7Z i `. 8u $l031 4j9
[WebSocket] sent key3: ±Ôñ<g
[WebSocket] closed

在我有机会做任何事情之前,WebSocket会自动关闭。任何人都可以对我收到的错误有所了解,你认为我应该做些什么?

1 个答案:

答案 0 :(得分:5)

您已创建了node.js HTTP服务器,但您尝试将其作为WebSockets服务器连接到它。 WebSockets协议不是普通的套接字,它不是普通的HTTP请求。 WebSockets有一个像握手一样的HTTP,但之后你有一个全双工连接(比如套接字而不像HTTP),它有少量的消息帧(与普通套接字不同)。

如果要创建node.js WebSockets服务器,请尝试使用Socket.IOnode-websocket-server。另一方面,如果您想要从Javascript连接到常规HTTP服务器,那么请使用一个支持AJAX的优秀Javascript库,例如jQuery