初识websocket (上)

Posted 飞测

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识websocket (上)相关的知识,希望对你有一定的参考价值。

  大家好,我是一名测试人员,左胜,最近API网关项目支持了websocket协议,需要有websocket服务端来提供测试,所以自己去了解学习了下。现根据最近总结一些知识点,借助飞测这个平台和大家分享下,共同学习,交流。

 

  首先websocket是一种网络通信协议。并且是为了解决实时获取服务器数据而实现的区别http一种通信协议。

 

  因为HTTP 协议是一种无状态的、无连接的、单向的应用层协议。它采用了请求/响应模型。通信请求只能由客户端发起,服务端对请求做出应答处理。

  这种通信模型有一个弊端:HTTP 协议无法实现服务器主动向客户端发起消息。

如果服务器有连续的状态变化,客户端要获知就非常麻烦。大多数 Web 应用程序将通过频繁的异步javascript和XML(AJAX)请求实现长轮询。轮询的效率低,非常浪费资源。

因此WebSocket 就是这样被发明的。WebSocket 连接允许客户端和服务器之间进行全双工通信,以便任一方都可以通过建立的连接将数据推送到另一端。WebSocket 只需要建立一次连接,就可以一直保持连接状态。这相比于轮询方式的不停建立连接显然效率要大大提高。

如何创建一个websocket服务端?请看下述步骤:

1、添加jar包支持


2、在一个类上使用@ServerEndpoint注解来指明它是一个websocket处理器。

初识websocket (上)


3、然后分别使用对应的注解来指明所指向方法是websocket触发事件的回调。

对应方法注解如下:

注解

作用

@OnOpen

打开连接触发事件

@OnMessage

收到消息触发事件

@OnClose

关闭连接触发事件

@OnError

传输消息错误触发事件

  这时一个websocket服务端基本就配置完了,是不是很简单。

主要使用@OnMessage注解来实现消息的接收及其他处理。如下图所示:

1、使用@OnMessage来指明是收到消息触发事件;

2、@param message 客户端发送过来的消息即为接收到的消息;@param session 可选的参数;

3、使用sendMessage来发送消息

初识websocket (上)

  那么如何使用客户端来调用使用websocket服务端呢?下面简单说明下

1、使用var websocket = newWebSocket(url); 来连接后端服务;

2、使用websocket的自带方法实现各个回调方法:回调方法与服务端的注解基本保持一致,如下图所示

初识websocket (上)

Demo实现效果如下图所示(是不是有点聊天室的感觉):

初识websocket (上)

扩展:既然websocket实现了客户端和服务器之间进行全双工通信,并且在连接通过后会一直保持连接状态,那么客户端就可以实时获取到服务器的信息了。所以我们可以利用此原理来实时监控服务器。(此方法的实现将在下一节讲述)


坚持的是分享,搬运的是知识,图的是大家的进步,没有收费的培训,没有虚度的吹水,喜欢就关注、转发(免费帮助更多伙伴)等来交流,想了解的知识请留言,给你带来更多价值,是我们期待的方向,有更多兴趣的欢迎切磋,我们微信订阅号,联系方式如下:

推荐文章









以上是关于初识websocket (上)的主要内容,如果未能解决你的问题,请参考以下文章

初识Websocket

初识SignalR

初识WebSocket

初识websocket

初识WebSocket

初识websocket