好的,所以我已经在 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 开发控制台上的 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 中,它只是说“调试:程序节点 app.js 以代码 null 退出”,这并不是特别有用。
所以它显然没有正确连接?我也尝试过在我的 nodejs 中监听端口 80,但是我什至没有得到标准网页(html、css 等)。
根据我在网上阅读的内容,如果您不使用 Web 角色(我假设 vm 不是),则很有可能让套接字正常工作。
知道我怎样才能让它工作吗?(最好在端口 80 上)?
编辑:开始怀疑这是否与套接字无关,意识到我在我的家庭虚拟机(它正在工作的地方)上收到了相同的切换协议消息。衍生问题:如何在 ubunu azure vm 上查看 nodejs 程序的崩溃详细信息?