服务器长连接socket服务搭建.doc

服务器长连接socket服务搭建.doc

ID:48448442

大小:685.96 KB

页数:7页

时间:2020-01-30

服务器长连接socket服务搭建.doc_第1页
服务器长连接socket服务搭建.doc_第2页
服务器长连接socket服务搭建.doc_第3页
服务器长连接socket服务搭建.doc_第4页
服务器长连接socket服务搭建.doc_第5页
资源描述:

《服务器长连接socket服务搭建.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、.word可编辑.服务器基于BIO建立Socket服务1多线程阻塞等待,建立Socket服务.基于BIOIO模型建立多线程阻塞等待客户端的连接操作。等待的连接线程独立;连接成功:建立新的线程,处理发送和接收消息等操作;连接失败:报io异常,连接线程不中断,继续等待新的客户端连接;无连接:线程阻塞等待;2生产消费者模式,等待接收来自客户端Socket消息一个socket通讯建立起来之后,开启新的线程处理发送,接收消息,在这个新的线程里面,建立一个并发的队列,服务器生产数据,客户端消费数据,没有数据发送的时候,线程队列保持阻塞等待状态。.专业.专注..word可编辑.1支持心跳机制,让

2、客户端保持长连接不断线服务器设置了读超时机制,客户端如果在指定的时间内没有向服务器发送数据进行通讯,服务器认定客户端是离线状态,主动断开等待线程,结束对某一个客户端的socket通讯心跳检测步骤:1客户端每隔一个时间间隔发生一个探测包给服务器2客户端发包时启动一个超时定时器3服务器端接收到检测包,应该回应一个包3如果客户机收到服务器的应答包,则说明服务器正常,删除超时定时器4如果客户端的超时定时器超时,依然没有收到应答包,则说明服务器挂了很多人会用booleansocketFlag=socket.isConnected()&& socket.isClosed()来判断就行了,但事实

3、上这些方法都是访问socket在内存驻留的状态,当socket和服务器端建立链接后,即使socket链接断掉了,调用上面的方法返回的仍然是链接时的状态,而不是socket的实时链接状态,所以这样心跳用这个不靠谱.专业.专注..word可编辑.4Socket服务载入SpringBean容器中,结合业务组件进行业务操作通过注解的方式@Componment的方式把socket接口回调类注入spring容器中,这样就可以很方面的在spring控制器中处理关于socket服务的各项回调接口,完成相关业务操作.专业.专注..word可编辑..专业.专注..word可编辑.4建立Socket状态

4、连接表和消息记录表通过tbl_sockets监控sockets的连接状态通过tbl_sockets_messages记录sockets通讯记录信息表结构--------------------------------Tablestructurefortbl_sockets(socket连接表)------------------------------DROPTABLEIFEXISTS`tbl_sockets`;CREATETABLE`tbl_sockets`(`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'自增长id',`socket_ip`var

5、char(255)NOTNULLCOMMENT'客户端ip地址',`socket_online_time`datetimeNOTNULLCOMMENT'客户端上线时间',`socket_offline_time`datetimeDEFAULTNULLCOMMENT'客户端下线时间',`socket_state`int(1)NOTNULLCOMMENT'socket连接状态-1:上线0:离线',`userid`int(11)DEFAULTNULLCOMMENT'socket-用户id-外键',FOREIGNKEY(userid)REFERENCEStbl_user(id),PRIMA

6、RYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=2DEFAULTCHARSET=utf8;--添加唯一性约束条件ALTERTABLE`tbl_sockets`ADDunique(`socket_ip`);--------------------------------Tablestructurefortbl_sockets_messages(socket消息记录表)------------------------------DROPTABLEIFEXISTS`tbl_sockets_messages`;CREATETABLE`tbl_sockets_

7、messages`(`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'自增长id',`socket_data`varchar(255)NOTNULLCOMMENT'消息文本',`socket_time`datetimeNOTNULLCOMMENT'消息接收:0,发送时间:1',`socket_type`int(1)NOTNULLCOMMENT'消息类型0:接收1:发送',`socket_id`varchar(255)DEFAULTNULL

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。