初识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处理器。
3、然后分别使用对应的注解来指明所指向方法是websocket触发事件的回调。
对应方法注解如下:
注解 |
作用 |
@OnOpen |
打开连接触发事件 |
@OnMessage |
收到消息触发事件 |
@OnClose |
关闭连接触发事件 |
@OnError |
传输消息错误触发事件 |
这时一个websocket服务端基本就配置完了,是不是很简单。
主要使用@OnMessage注解来实现消息的接收及其他处理。如下图所示:
1、使用@OnMessage来指明是收到消息触发事件;
2、@param message 客户端发送过来的消息即为接收到的消息;@param session 可选的参数;
3、使用sendMessage来发送消息
那么如何使用客户端来调用使用websocket服务端呢?下面简单说明下
1、使用var websocket = newWebSocket(url); 来连接后端服务;
2、使用websocket的自带方法实现各个回调方法:回调方法与服务端的注解基本保持一致,如下图所示
Demo实现效果如下图所示(是不是有点聊天室的感觉):
扩展:既然websocket实现了客户端和服务器之间进行全双工通信,并且在连接通过后会一直保持连接状态,那么客户端就可以实时获取到服务器的信息了。所以我们可以利用此原理来实时监控服务器。(此方法的实现将在下一节讲述)
坚持的是分享,搬运的是知识,图的是大家的进步,没有收费的培训,没有虚度的吹水,喜欢就关注、转发(免费帮助更多伙伴)等来交流,想了解的知识请留言,给你带来更多价值,是我们期待的方向,有更多兴趣的欢迎切磋,我们微信订阅号,联系方式如下:
推荐文章
以上是关于初识websocket (上)的主要内容,如果未能解决你的问题,请参考以下文章