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

Node.js and web-socket-js simple client server not opening

本文关键字:服务器 客户端 简单 js web-socket-js Node      更新时间:2023-09-26

我的服务器.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 我正确地收到你好世界! 但是,当我尝试使用客户端进行连接并在 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 会自动关闭。 任何人都可以阐明我收到的错误,您认为我应该怎么做?

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

如果要创建节点.js WebSockets服务器,请尝试使用 Socket.IO 或node-websocket-server。另一方面,如果你想从Javascript连接到一个常规的HTTP服务器,那么使用一个伟大的Javascript库,支持AJAX的,如jQuery。