node.js WebSocket服务器

目前我尝试为我们的数据库周围的新活动创build一个推送服务器实例。 当然,你会发现很多关于这个话题的信息。

我正在使用: http : //static.brandedcode.com/nws-docs/#s6-p1

通过以下客户端实现:

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script src="http://cdn.socket.io/stable/socket.io.js"></script> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script> <title></title> </head> <body> <script type="text/javascript"> (function() { var webSocket = new io.Socket('ws//test', { port: 8080 }); webSocket.connect(); webSocket.on('connect',function() { console.log('Client has connected to the server!'); }); webSocket.on('message',function(data) { console.log('Received a message from the server!',data); }); webSocket.on('disconnect',function() { console.log('The client has disconnected!'); }); window.ws = webSocket; }()); </script> </body> </html> 

控制台返回:

 Unexpected response code: 404 XMLHttpRequest cannot load http://ws//test:8080/socket.io/xhr-polling//1303822796984. Origin http://test is not allowed by Access-Control-Allow-Origin. 1303822796984GET http://ws//test:8080/socket.io/xhr-polling//1303822796984 undefined (undefined) 

我不知道这个问题。

谢谢你的帮助。

映入眼帘!

您正尝试使用Socket.io直接连接到WebSocket服务器。 如果只运行WebSocket服务器而不运行Socket.io服务器,则可以使用普通的HTML5 API连接到websocket。

例如:

 var ws = new WebSocket("ws://domain:port"); ws.onopen = function(){} ws.onmessage = function(m){} ws.onclose = function(){} 

你使用的是什么浏览器? WebSockets目前仅受Google Chrome支持。 其他浏览器中的testing将失败。

你可能想'ws://push.xxx.binder.test'而不是'ws//push.xxx.binder.test' (缺less冒号)。

更改

 var webSocket = new io.Socket('ws//push.xxx.binder.test', { 

 var webSocket = new io.Socket('push.xxx.binder.test', { 

您不需要为您的域添加前缀为socket.io(特别是没有冒号之前的斜杠)。 另外var webSocket不是很好的命名 – socket.io不仅可以使用websockets (甚至在你使用xhr-poliing错误中)