egg-socket.io 会出现间断性丢失客户端连接的情况

Created on 19 Jan 2018  ·  12Comments  ·  Source: eggjs/egg

  • Node Version:9.2.1
  • Egg Version:2.0.0
  • Plugin Name:egg-socket.io
  • Plugin Version:4.0.6
  • Platform:
  • Mini Showcase Repository:


客户端一直保持连接中,没有出现过中断的情况。但是在查找app.io.sockets.sockets的时候,会出现有时候能查到,有时候为空的情况。

例如:客户端1和客户端2,一直保持连接中,我进行广播的时候查找app.io.sockets.sockets会出现以下几种情况:

  • 查到所有socket (客户端1和客户端2)
  • app.io.sockets.sockets为空
  • 只查到部分socket (客户端1和客户端2轮流查到)

第一次发消息查到了socket,过几秒再查就没有了,过几秒再查又有了。

有时候还会出现报错:
403 ERROR 32088 A client (undefined:NaN) error [ECONNRESET] occurred: read ECONNRESET

请问是什么原因?该如何解决?谢谢~

图:

egg-socket.io

Most helpful comment

还有一种报错是:ERROR 11644 A client (::ffff:59.58.125.74:54237) error [HPE_INVALID_METHOD] occurred: Parse Error

All 12 comments

我服务器上是用pm2部署的。本地测试不会有这种情况。刚刚服务器上换成了egg内置的部署方法,没有出现上述情况了。

不要用 pm2 吧,没测试过 pm2, 而且EGG也不需要 pm2 ,别用就行了

ERROR 51170 A client (::ffff:127.0.0.1:58655) error [ECONNRESET] occurred: read ECONNRESET
客户端刷新的时候报错,这个报错该如何解决?

遇见了新问题。
使用安卓客户端连接,断开和连接的时候都能获取到socket对象,但是this.app.io.sockets.sockets查看的时候或者存储到app.config查看的时候,发现没有安卓客户端的socket对象(连接并没有断开过)。pc浏览器连接正常。
我对比了一下安卓客户端和pc客户端的socket对象区别,发现只有一点区别:pc的xdomain: true,安卓的xdomain: false。
不知道安卓客户端的丢失是因为什么原因造成的?

神奇地可以找到对象了!然而我没有改动什么。。。发现这种现象会随机出现。今天测试出现部分客户端丢失,连接和断开的时候都能看到ctx.socket,但是在controller中查看this.app.io.sockets.sockets的时候,部分客户端就没有了,中途没有断开过:(

看了一下日志,好像是进程不同造成的。如果几个socket对象不在同一个进程,那么该如何获取到所有的socket对象呢?

上面不同进程的问题解决了,通过redis的sub、pub进行订阅和广播。进程之间要注意公共数据的同步。

@Cheese-Yu 为啥一定要用 pub/sub 呢,直接 get/set 不行?

@pengkobe 因为我需要主动通知其他进程的socket对象,所以用了pub/sub

还有一种报错是:ERROR 11644 A client (::ffff:59.58.125.74:54237) error [HPE_INVALID_METHOD] occurred: Parse Error

问题都解决了吧,关了,有需要再开。

还有一种报错是:ERROR 11644 A client (::ffff:59.58.125.74:54237) error [HPE_INVALID_METHOD] occurred: Parse Error

我也遇到这问题了,你找到问题所在了不

Was this page helpful?
0 / 5 - 0 ratings

Related issues

zrxisme picture zrxisme  ·  44Comments

popomore picture popomore  ·  38Comments

fengmk2 picture fengmk2  ·  51Comments

shaoshuai0102 picture shaoshuai0102  ·  52Comments

popomore picture popomore  ·  59Comments