pm2的cluster模式下如何使socket.io的前端多个连接保持会话不会被关闭?

学node不久,本来单个连接前台用socket.io做websocket连接和事件监听没啥问题,但如果用pm2的cluster开多个进程/线程模式来处理前台请求的时候控制台就会出现

failed: Connection closed before receiving a handshake response

如何优雅的解决?
ps.不太想用nginx做proxy加后台多个process不同端口的模式。

阅读 6.2k
2 个回答
  1. 放弃Long-polling握手, 直接使用websocket握手, 这样不会有多余的请求落到不同的进程而导致握手失败;
  2. 麻烦就麻烦, 使用nginx做proxy,nginx确实是一个不错的选择.
  3. 如果确定不用nginx的proxy, 也可以是用nodeJs自带的cluster模块, 但是如果使用Long-polling起手的话, 要做IP-HASH
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题