- tcp无法关闭链接?无法复用链接?
this.tcp = wx.createTCPSocket(); this.tcp.connect({ address: app.tcpurl, port: app.tcpport }); this.tcp.connect({ address: app.tcpurl, port: app.tcpport }); this.tcp.onMessage(function(res){ //我的业务 }); 如上所示,多次执行connect()的原因有:1)用户多次刷新页面,2)掉线重联,3)代码故意像上面这样写。此3种原因都会造成connect()多次执行。 问题是如果多次执行connect(),服务器这边只有1个联接,但是onMessage()里变向的也会执行多次!服务器发回一条信息,onMessage就会处理多次! 请问这个问题如何解决?
2021-10-10 - tcp怎么关闭和复用联接?
1)同一个页面,无法创建2个tcp。如 this.tcp = wx.createTCPSocket(); this.tcp2 = wx.createTCPSocket(); 两次执行则报VM3023 WAService.js:2 Error: [TCPSocket] created too much,即使第1个close也不行。解决方法全局唯一创建tcp,不存在tcp2。接着有第2个问题。 2)用户N次进入同一个页面,则tcp.onMessage的监听就会N次执行!正常的要求是进入 一次执行一次。bug是进入一次执行了N次。 3)断线重联,每10秒重联一次,那么一分钟 联6次,即同一个tcp共执行6次tcp.connect();第6次执行成功。后台返回一个信息,那tcp.onMessage就要执行6次!前5次失败的也包括进去了。同一个tcp不应该执行这么多次。
2021-10-09