最近在做 IOT 的项目,里面有个小程序要用到 webSocket ,借这个机会,封装了一个 uniapp小程序 适用的 Socket 类,包括断线重连,心跳检测等等,具体实现如下。
直接实例化封装的 socket 类,调用 initSocket 初始化就行了,当收到消息的时候,会触发全局 $emit 事件,只需要使用 $on 监听 message 事件就行。
我这边在 globalData 里面定义了 socketObj 全局变量,在首页 onShow 生命周期里面判断当前是否已经初始化了 socket 实例,再进行 *** 作。
home.vue
断线会自动重连。
如果看了觉得有帮助的,我是@ 鹏多多11997110103 ,欢迎 点赞 关注 评论;
END
往期文章
个人主页
socket 的 setSoTimeout 设置超时时间 单位是毫秒。超过设置时间抛正历铅出SocketTimeoutException 异常。捕获SocketTimeoutException异常关闭连接举好就烂哪行了。
你这种是用的阻塞模式,就是 Accept和败州Receive 都会卡住不动,直到有新连接或者有新数据。实际使用场景中,阻塞模式,一个线程专门Accept 有新的连接之后,为每一个圆蔽连接再创建一个线程来处理 Receive,也就是对于服务器来说,假设当前有10个工作的连接,那么至少需要11个线程。
你只需要开几个专门的线程来橘枯州负责接受连接和接收数据就可以了。
这种阻塞模式不适合大并发量的网络程序,测试小程序没问题,大并发量时需要使用非阻塞模式,比如一般常用的select模式
百度 “select模型” 就可以搜到。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)