1、普通的消息订阅和推送,比较简单,对于订阅人员来说只订阅了一个频道,大概流程图如下:
2、复杂一点的就是:一个订阅人员可以订阅不同的频道,也就是频道可以切换,流程图如下:
3、笔者用web工程大概实现了一下:
废话不多说,直接上代码:点击下载
注意事项:websocket的访问url格式:ws:8080/servername
这种urlpattern,很可能被web.xml配置的过滤器或者拦截器拦截下来,笔者在搭建的过程中添加:
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.swf</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.gif</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.png</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.js</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.xml</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.json</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.map</url-pattern> </servlet-mapping>直接导致了ws服务被拦截,打开浏览器f12报错内容如下:Firefox 无法建立到 ws://localhost:8080/websocket-demo/websocket/1490266517000 服务器的连接。
删除掉上面的配置内容就好了。
若对上述内容读取困难请结合下面博客: