0

我的 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 错误中进行调试时,我得到以下输出。

[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 会自动关闭。谁能阐明我收到的错误以及您认为我应该怎么做?

4

1 回答 1

5

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

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

于 2011-05-07T23:35:28.107 回答