使用Node.js在Amazon Linux AMI上设置websocket服务器

我一直在尝试在Amazon EC2实例上设置一个简单的websocket服务器。 我正在使用Linux的微型实例。 第一次启动后,我更新了所有的操作系​​统软件包, 遵循这个伟大的指南获取节点和NPM安装 ,安装socket.io,expression(目前不使用),和websocket.io其中包括由miksago websocket服务器。

首先,我将Socket.io作为后端。 我使用下面列出的网站的示例代码设置了一个简单的服务器。 我用sudo node server.js运行这个。 我使用sudo,以便可以在端口80上侦听,否则会导致错误。 从这里,我把我的亚马逊公共DNS到websocket.org回声testing的位置字段。 当我按连接,我的服务器将输出debug - destroying non-socket.io upgrade 。 我有一个控制台输出内的“连接”监听器,永远不会打印,所以看起来有一个错误之前,连接请求通过。 这可能是我必须使用socket.io客户端的一个socket.io服务器工作,但我找不到任何明确的答案。

我第二次尝试使用Miksago的websocket-server。 我将列出下面的服务器的源代码。 这一次,我能够看到连接请求上的控制台输出,但连接仍未build立。 我试图打印connection.header对象,但收到一个错误。

我试图build立一个简单的服务器,只是为了让基础知识去,我一直无法确定是什么问题。 我使用websocket.org来testing服务器,因为他们的客户端设置正确。 我在做什么错误设置服务器?

 Socket.io server var io = require('socket.io').listen(80); io.sockets.on('connection', function (socket) { console.log("Connection request on socket.io server"); }); Websocket-Server var ws = require("websocket-server"); var server = ws.createServer(); server.addListener("connection", function(connection){ console.log("Connection request on Websocket-Server"); }); server.listen(80); 

编辑:从节点websocket服务器debugging输出。 这是console.log(connection._req);的输出片段console.log(connection._req); 信息看起来是正确的,但服务器根本没有build立连接。

 httpVersion: '1.1', complete: true, headers: { upgrade: 'websocket', connection: 'Upgrade', host: 'ec2-50-16-107-223.compute-1.amazonaws.com', origin: 'http://websocket.org', 'sec-websocket-key': 'HdgJaiL2TZ4iyOHTarmlig==', 'sec-websocket-version': '13' }, trailers: {}, readable: true, url: '/', method: 'GET', statusCode: null, 

编辑2:使用websocket.io作为Node.js上的websocket服务器。 它的工作原理不需要客户端的js文件,并且是最新的spec。 它可以通过npm和git。

根据这个StackOverflow的问题 ,你必须使用socket.io的客户端代码。 使用websocket.org的客户端代码会给你这个错误。