设备主动连接socket服务器,服务器根据标识给客户端发送消息;
问题:
客户端网络断开?
服务器端处理:
TCP断开有个等待时间,30秒内如果客户端网络恢复,消息还是可以推送过去。这个时间需要系统级别的设置。
由于服务器端不会对客户端进行心跳或者ping的检测,如果客户端断网,服务器无法感知。当你在使用session发送消息的时候就会异常。这个需要手动处理捕获异常移除对象。
客户端处理:
使用js写心跳机制,检测是否断网,不断尝试连接直到网络恢复。
websocket攻击:
由于每次连接都是一个新的TCP,一个客户端可以发起多次连接,就会形成DOS攻击,需要对客户端连接做限制;
WebScoket协议标准
https://www.rfc-editor.org/rfc/rfc6455.txt
源码地址:
https://github.com/dianming/ClinicPCpush
文档: