websocket功能默认是关闭的,为啥默认不开启呢?因为这货用在论坛里有些鸡肋,原因如下
- 启动论坛的同时还要启动一个websocket服务
- 在关闭论坛服务的时候,websocket服务还会停留一段时间,说长不长说短也不短,前后大约要1-2分钟的样子
论坛没有做无刷新页面获取数据的功能(比如pjax),所以每次访问论坛内的页面时,都会刷新页面,这会导致ws连接断开,然后等待页面加载完成后,它又开始重连
目前围绕ws开发的功能有如下自己的话题被收藏了,会收到通知
- 自己的话题被评论了,会收到通知
- 自己的评论被回复了,会收到通知
- 进入页面后,ws会自动获取未读消息数,然后展示在页面上的Header和
document.title
上
效果如下
当然开启websocket服务也不是没有好处的,比如:
- 上图中别人回复了自己的评论就会立即收到消息
发一个帖子等着别人回复,不用一直刷新页面看有没有新消息了
后续想法:给论坛接入pjax,让网页实现无刷新浏览内容,这样ws连接就不会断了
- 给论坛开发一套ws主题,全站就只有一个首页,内容全靠ws服务从服务端推给前端,这个听起来很赞,实现不太好弄,相当于又重新开发一个网站了
如果你看了上面的说明后,还是想开启,配置如下
只有三个配置
- 开启功能,不多说
- ws服务的主机名,这个我在开发的时候用的是
http://localhost:8080
访问的论坛,所以这里就配置成了localhost
- ws服务的端口,论坛的端口是8080,我在开发的时候这里配置成了8081,只要不跟其它服务的端口冲突就可以
至于上面主机名能不能配置成其它的,我没试过,不过它既然是一套服务了,应该是可以配置成独立的域名的,而且应该还可以直接抽出成一个单独的服务,这个我没验证,有兴趣的朋友可以试一下
然后直接启动系统即可,注意,ws服务在前端只有登录后的用户才有效
另外有一点要说明一下,如果你在开发过程中开启了ws服务,当改了点代码,要重启一下,这中间要等待1-2分钟,不知道为啥ws服务跟论坛服务不是同时停掉的,你要是有解决办法,求告知