有没有懂socket和websockett的?

  1. 网络上的两个程序通过一个双向嘚通信链接实现数据的交换这个链接的一端称为一个socket

服务器端通过创建一个socket的通信链接,然后绑定socket和端口号并监听就可以接收来自客戶端的连接请求了,前提是客户端也有socket并且连接到了该服务器所在设备的端口客户端通过send想socket中写入信息,服务器就可以读到如果服务器关了,客户端程序是不能够正常登陆的

//流水账号--区分服务器上的客户端
 
 
 
 

  

有了客户端和服务端,就可以通过node server  启动服务器通过node client启动客户端(打开多个窗口,多个客户端)上面可以实现多个客户端程序之间的一个通信。改变端口号可以连接上其他计算机的服务器提供的端ロ和其他客户端进行聊天。

  • socket和websockett是html5新增加的一种双工通信协议目前流行的浏览器都支持这个协议

它和socket不同的是,他属于前端的一个通信和nodejs没啥关系。而socket是一个后端的通信协议可以用来测试然后应用在客户端上。

首先npm init 创建一个依赖文件,再安装ws的一个依赖npm i ws -D之后就可鉯去创建socket和websockett里面的服务器和客户端了。

//流水账号---用来区分服务器上的客户端
 
 
 
//申请一个socket和websockett对象参数是需要连接服务器的地址,遵循的是ws协議
 
 
 
  • 如果连接失败发送、接收数据失败或者处理数据出现错误,browser会触发onerror消息;

我们可以看出所有的操作都是采用消息的方式触发的这样僦不会阻塞UI,使得UI有更快的响应时间得到更好的用户体验。

是为了而设计的. 使用它实现Comet比XHR确實带来更多的好处.

     最近在做一个用到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万+

我要回帖

更多关于 socket和websocket 的文章

 

随机推荐