1、普通的消息订阅和推送,比较简单,对于订阅人员来说只订阅了一个频道,大概流程图如下:

websocket长连接+redis消息订阅和发布

2、复杂一点的就是:一个订阅人员可以订阅不同的频道,也就是频道可以切换,流程图如下:

websocket长连接+redis消息订阅和发布

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 服务器的连接。

删除掉上面的配置内容就好了。

若对上述内容读取困难请结合下面博客:

redis基本使用

websocket搭建


相关文章: