在azure ubuntu vm上设置支持websocket的应用程序

时间:2012-07-11 11:24:36

标签: node.js azure websocket socket.io

好的,所以我在azure云中创建了一个ubuntu vm,我已成功启动了nodejs,redis,socket.io,Express以及我正在编写的游戏的所有组件。

我在内部和外部端口8080上设置了azure端点,并在我的js代码中使用了app.listen(8080)。

当我浏览到http://< app-name> .cloudapp.net:8080 /我可以查看我的nodejs应用程序的结果,它显示了html,css等。

但是当它尝试启动套接字连接时(使用socket.io)我只得到这个(在我的chrome dev控制台下的websockets):

HeadersPreviewResponseWebSocket Frames
Request URL:ws://<app-name>.cloudapp.net:8080/socket.io/1/websocket/13510496541533398587
Request Method:GET
Status Code:101 Switching Protocols
Request Headersview source
Connection:Upgrade
Host:<app-name>.cloudapp.net:8080
Origin:http://<app-name>.cloudapp.net:8080
Sec-WebSocket-Extensions:x-webkit-deflate-frame
Sec-WebSocket-Key:y5vueHE66phl70gle7KCtw==
Sec-WebSocket-Version:13
Upgrade:websocket
(Key3):00:00:00:00:00:00:00:00
Response Headersview source
Connection:Upgrade
Sec-WebSocket-Accept:dn+2lA6sMIXHLEmDS/Q4j/IIwxI=
Upgrade:websocket
(Challenge Response):00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

当我尝试在客户端(浏览器)上使用socket.emit()发送任何内容时,它还会使azure上的nodejs应用程序崩溃;在我的azure ssh中,它只是说'DEBUG:程序节点app.js以代码null退出',这不是特别有帮助。

所以它显然没有正确连接?我也试过在我的nodejs上侦听端口80,但后来我甚至没有得到标准的网页(html,css等)。

从我在网上看到的内容,很可能让套接字工作,而不是使用网络角色(我认为vm不是)。

知道如何才能让它发挥作用吗? (最好是在80号港口)?

编辑:开始怀疑这对套接字没有任何解决方案,意识到我在我的家庭虚拟机(它正在工作的地方)获得相同的切换协议消息。分拆问题:How can I view crash details for a nodejs program on a ubunu azure vm?

1 个答案:

答案 0 :(得分:0)

Windows Azure负载均衡器上有大约60秒的时间。

如果在建立websocket连接后立即将消息发送回客户端,它是否有效?

如果是这种情况,你必须实施一些保持每分钟发送一条实时信息。