使用Node.js在Azure主机上创建Web套接字服务器?

时间:2012-12-14 05:38:53

标签: node.js azure websocket

我有一个节点应用程序,我试图在Azure上托管,创建一个websocket服务器。我正在尝试使用以下代码创建Web套接字服务器:

var socket = require('websocket').server;
...
server.listen(1111,function(){
   console.log('Http server is listening on port 1111');
});

当我在本地计算机上执行此操作时,它运行正常,但是一旦在Azure上运行以下客户端javascript:

var connection = new WebSocket('ws:' + document.domain + ':1111');
connection.send(msg); //throws error

引发错误:

  

InvalidStateError:尝试使用不是的对象,   或者不再可用

如果我使用azure,我可以获得所需的功能吗?如果是的话,有关从哪里开始寻找修复的任何建议吗?

您可以在行动here中看到已损坏的应用。

1 个答案:

答案 0 :(得分:3)

它可以在Azure上运行,但您需要进行更改。试试这个:

server.listen(process.env.port, function () {
  var addr = app.address();
  console.log('Server listening on http://' + addr.address + ':' + addr.port);
});

这是一个使用来自Socket.IO的Azure源代码中的聊天示例的教程:

http://www.windowsazure.com/en-us/develop/nodejs/tutorials/app-using-socketio/

它假设你在Windows上,这不是绝对必要的。要从Mac或Linux系统在Azure上使用Node.js,只需从Git发布:

http://www.windowsazure.com/en-us/develop/nodejs/common-tasks/publishing-with-git/