socketio 和 实际业务处理思路

socketio

使用Socket.io客户端,它的具体用法自行查询文档
https://www.w3cschool.cn/socket/socket-k49j2eia.html
对比前面的H5-WebSocket客户端,使用更加方便,支持on自定义事件。


这个socketio我的理解就是相当于原生jquery和jq的区别,原生的websocket和socketio
socketio 和 实际业务处理思路_第1张图片

实际业务处理思路

对于websocket来说后台接到的都是fd,fd是变化的,那么怎么才能和实际的业务产生关系呢,比如说mysql中存储的user的信息,那么没回怎么才能知道用户对应的fd呢,可以没回连接的时候前台发过来mysql中的user_id 和 fid 进行绑定。那么绑定的话有几种例子(并不局限于这些方法,仅供参考)
1.mysql中的绑定 (每回用户来的时候把用户id和fd绑定在数据库中。不推荐)
2.table(swoole内存暂时没有学)
3.redis 中 使用hash 绑定 fd (推荐)
那么如果服务器重启怎么办,fd不就是乱了么,那么think-swoole中有在服务开启的时候响应的事件,就可以把所有fd清空。(mysql中操作复杂,在redis中简单快。推荐redis的理由)
那么fd对于用户退出客户端就没有用处了,那么在退出的时候就可以删除redis中对应的fd
(自己的想法)
如果用户没有在线但是发送了怎么办
解决方法:可以把消息暂时放在redis中的list中或者mongo中,在用户连接的时候看看有没有用户的未读消息,如果有就从list中或mongo中取出推送给用户。

你可能感兴趣的:(socketio 和 实际业务处理思路)