如何解决在 Azure 上运行 Node JS websocket
服务器应用在 Heroku 上运行良好,但迁移到 Azure 后,服务器无法启动。
这是代码..
const PORT = process.env.PORT || 2498;
const INDEX = '/index.html';
const server = express()
.use((req,res) => res.sendFile(INDEX,{ root: __dirname }))
.listen(PORT,() => console.log(`We\'re live on channel : ${PORT}`));
const wss = new Server({ server });
wss.on('connection',(ws) => {
console.log('Client connected');
ws.on('close',() => console.log('Client disconnected'));
ws.on('message',(message) =>{
// this stays within the server
console.log('[SERVER]: Received a message => %s',message );
})
})```
.........
Clients connected are returning not establish an handshake ....
解决方法
Azure web app only supports the exposure of port 80 and 443 for website access.
我之前的需求和测试结果:
我认为你的问题是一个典型的问题。之前也有相关需求,在webapp中测试失败。 Azure 应用服务的所有文档,说到websocket,都是使用SignalR。我也测试了signalr服务,成功了,但是这个服务是免费的,目前只支持20个客户端连接。
之前的想法是创建一个console程序,放到webjob中,让webjob提供websocket服务,但最后都失败了。
因为azure webapp运行在沙盒环境,并且只开放了80和443端口,所以不能做更多的配置。很明显,你的websocket服务启动的端口是2498,所以不支持。
建议
如果一定要使用websocket,不管是什么编程语言,都必须支持自定义端口开放,比如使用虚拟机。
您可以比较azure云服务和虚拟机的费用。哪一种适合你,哪一种适合你。
另外一个建议,你可以购买第三方内网穿透工具,使用固定的IP或URL,比如ngrok,这样就可以把websocket服务放到你公司的内部服务器上。 (测试有效)。
在这三个选项中,内网渗透可能是最具成本效益的选择。您可以根据自己的需要选择。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。