项目地址:https://distchen.github.io/DistSpringWebsocketClient-CSharp/
如果你用过WebSocket 的话,你会觉得用来做推送等消息服务真轻松,同时你也会意识到因为其太简单,导致很多事情都需要自己处理。为了简化二次处理的过程,Spring 提供了一个 Spring WebSocket 模块,此模块用 Stomp 协议来处理消息,使得我们可以用发布、订阅的模式来使用WebSocket。
这里要弄明白的是:Spring WebSocket 仅仅只是用了 Stomp 协议 协议的消息格式,并不是说 Spring WebSocket 自己是一个 Stomp Server,所以是无法使用 Stomp 协议 提供的各种 Client 来进行连接并使用的(Stomp.js除外)。因此如果想用 C# 等语言连接上 Spring WebSocket,只要保证发送的消息符合 Stomp Frame 的格式就行了。
Stomp Frame 示例
COMMAND
header1:value1
header2:value2
Body^@
stomp.js连接、发布、订阅
创建一个 Client 对象
|
|
进行连接
|
|
订阅某个 topic
|
|
发布消息到某个topic
|
|
取消订阅某个 topic
|
|
从上面可以看到,使用 Spring WebSocket 和 Stomp.js 可以使我们以非常优雅的方式来使用 WebSocket。很遗憾的是,这种优雅的方式目前只有 Stomp.js 才能用。为了说明这种优雅的方式其实在任何语言中都是可以使用的,因此才有了这个项目,只是简单说明怎样用其它语言处理 stomp.js 处理的事情,以C#为例,其它语言都是类似的处理。
我用 C# 如何处理
此类库中,同样提供了一个Client 类(Dist.SpringWebsocket.Client)。
创建一个 Client 对象
|
|
进行连接
|
|
订阅某个 topic
|
|
发布消息到某个topic
|
|
取消订阅某个 topic
|
|
从上面可以看到,使用了此类库后,处理方式与 stomp.js 很类似。不仅可以保证使用 spring websocket,而且还提供了很优雅的方式来使用。
浏览器与PC端通信
服务不可用时,相应的处理机制
这里只实现了如何用C#来做,用JAVA、SWIFT 等道理都是类似的,主要是构造好消息包就行了。