最近在做一个用到socket和websockett的项目大體是这样:服务端用的是java开发的web服务,客户端是机床机床端跑的是用C#技术编写的exe程序,在exe程序中会有ws连接web服务端,从而web端能监控机床端的状态(这里并没有涉及到页面js中使用socket和websockett)
服务端要监控客户端遇到一个很让人为难的要求就是“web服务端需要能够感知到客户端的联網和断网状态,进而在后台操作后台数据库”查过很多资料,socket和websockett端无法感知客户端的连接情况那么我使用了第一种方式:服务端定时發信息给客户端,如果发不过去触发onError的方法,那么就在onError中做进一步操作可是这种方法在线上运行以后很快得到了否定,服务端用的是
於是采用了方法二:客户端每10s(举个例子)向服务器端发一个信息服务端将发这个数据的信息和保存时间存入表中,随后应用用定时任務不断的检查当前时间和刚刚存入的时间的差值:这里用到了这个函数TIMESTAMPDIFF(SECOND,
dataEnterTime,now())如果这个值大于20s,就判定断网其实就是定时任务开启,不断扫描最后一次发送时间和现在时间的差值时间太长的话,那就是断了而不是每次都主动向客户端发信息。
发布了24 篇原创文章 · 获赞 6 · 访問量 8万+