Websocket
本框架对Websocket进行了封装,力求简洁易用,只需要实现一个ChannelListener即可。本框架中Websocket服务和常规Http服务是兼容的,也就是二者可以混合在一起使用。
#
定义通讯数据格式通常Websocket之间交互会对通讯数据格式进行统一定义,也可以对客户端和服务端分开定义不同对格式。当然,这不是必须的,也可以直接用String文本,再对文本进行解析。
上面定义了一个简单的通讯对象,里面只有一个字符串字段,可以根据需要添加其他字段。如果不定义ChatMessage,也可以直接用String字符串通讯。
#
实现ChannelListener实现一个ChannelListener通讯类,至少需要实现2个方法,onConnect和onMessage,分别对应客户端连接和收到消息。
#
映射通讯路径有两种方式进行通讯路径映射,一种是上面例子中通过@WebSocketListener("/web/chat")注解进行映射,另一种方式是通过程序动态映射,见下面实例:
#
综合实例通过上面的定义,Websocket服务就已经可以正常工作了,为了演示完整的效果,这里进一步加入前端模版代码:
resources/chat/chat.html
由于上面的模版路径在resources/chat/chat.html,所有需要配置一下模版路径:
下面是Controller,渲染上面的html模版:
注意事项
需要注意的是,上面模版中的javascript里面的websocket已经固定了URL为ws://localhost:8080/web/chat
,所以请务必通过http://localhost:8080
方式访问,如果通过http://127.0.0.1:8080
方式访问,会因为域名不同而无法在http服务与websocket服务之间共享session。