我有一个节点应用程序,我试图在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中看到已损坏的应用。
答案 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/