【问题标题】:Node.js and web-socket-js simple client server not openingNode.js 和 web-socket-js 简单客户端服务器未打开
【发布时间】:2011-08-20 22:16:38
【问题描述】:

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

【问题讨论】:

    标签: javascript node.js websocket ports


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-06
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多