微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Azure 上运行 Node JS websocket

如何解决在 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?