说实话,当老大跟我说试下wss的时候,我一脸懵逼😳,wss是啥?接触java还没多久,虽然知道了structs,IFTTT,但 what is wss?老大说,你去网上了解一下,然后看怎么样?(我们是想做web api,然后在微信小程序上试试)。没办法,只好老老实实地百度google,自己埋头查资料,写demo,测试。最后,总算也完成了任务,写了几个api,在微信小程序上也好好地运行起来。开工第二天,闲着也是闲着,就来总结一下我的wss开发。
我相信,当你在百度输入wss的时候,并不能预想地搜到一大堆博客呀,介绍呀,还会掺杂一些乱七八糟的。别急,虽然没什么有用的,但是还是可以找到沾边点的东西。这时,你会发现,与wss连接在一起的,websocket,以及ws。websocket是关键。当你搜索websocket的时候,然后就会有许多的博客文章来介绍websocket是什么了,怎么来实现websocket编程了。
现在,来说说我的理解吧,websocket是一种通信协议,可以类比于http。wss与ws就相当http于https。wss是加密的安全通信协议,需要证书。所以初学下,我们可以从ws出发。websocket通信就相当于建立一个tcp连接的通道,连接建立成功之后,双方就可以互相通信了,直到连接关闭。从而可以实现服务端主动向客户端发送消息。另外,websocket通信是通过异步回调的,open,close,onMessage(收到消息),onError(发生错误)都可以定义回调,通过endPoint的方式。客户端可以不用阻塞,不用轮询。顺带说一下,通信格式是你可以自定义的,只要客户端和服务端统一即可。不过大部分为json格式。
说完了通信,我们再来说说开发部署运行。websocket可以通过部署到tomcat上运行。建立一个动态的web工程,导出war包,部署到tomcat中即可.(同structs2,不清楚的可以看我上一篇<菜鸟创建一个简单的structs2项目>) 。
好了下面介绍下websocket编程吧。要进行websoket编程,需要了解:
@ServerEndpoint
指定URI,相当于http中的URL,写在类前面
@OnOpen
websocket连接建立成功
@OnMessage
websocket收到消息
@OnClose
websocket连接关闭
@OnError
websocket发生异常错误
好了,先看服务端。
首先创建类 RGBLightSocket(这是一个灯泡的socket类)。
在类的上面指定endPoint

指定打开方法:

指定接收到消息的方法:

指定关闭方法:

指定错误方法:

好了,websoket的5个重要的方法都有了,发送消息使用sendText().
session.getBasicRemote().sendText(errMsg);
看一下我的发送方法:

服务端描述至此,再来看看客户端如何与服务端通信吧。
以下为jsp页面中的调用:
打开socket

发送消息:<开灯>

由上述可以看出,客户端和服务端只需要在连接建立之后,发送消息和处理发送消息的回调即可。无需等待,没有阻塞。
网友评论