websocket nutz
来源:互联网 发布:手机机顶盒遥控器软件 编辑:程序博客网 时间:2024/05/17 09:19
nutz-plugins-websocket
简介(可用性:生产)
为websocket提供完整支持
使用WebSocket最低要求:
- Tomcat 8 或 Jetty 9.2+
- JDK7+
低于该版本的就别想搞websocket了
使用方法
服务器端入口类
@ServerEndpoint(value = "/websocket", configurator=NutWsConfigurator.class)@IocBeanpublic class MyWebsocket extends AbstractWsEndpoint {}
页面端js示例
假设是jsp页面, 其中的base是项目的Context Path, home是房间的名称
var ws;var WS_URL = window.location.host + ${base} + "/websocket"if (location.protocol == 'http:') {ws = new WebSocket("ws://"+WS_URL);} else { // 如果页面是https,那么必须走wss协议ws = new WebSocket("wss://"+WS_URL);}ws.onmessage = function(event) { var re = JSON.parse(event.data); if (re.action == "notify") { // 弹个浏览器通知? } else if (re.action == "layer") { // 弹个层? layer.alert(re.msg); }};ws.onopen = function(event) { // 加入home房间ws.send(JSON.stringify({room:'home',"action":"join"}));};
从页面发消息给服务器:
ws.send(JSON.stringify({room:'房间名称',"action":"join"}));
从服务器发消息给房间
通过ioc注入上述的MyWebsocket@Injectprotected MyWebsocket myWebsocket;public void sayhi(String room) { myWebsocket.each(room, new Each<Session>() { public void invoke(int index, Session ele, int length) { myWebsocket.sendJson(ele.getId(), new NutMap("action", "layer").setv("msg", "hi")); } });}
从服务器发消息给指定的WebSocket会话
这是高级用法, 需要自行建立wsid与业务数据的关联,然后才能得到wsid
通过ioc注入上述的MyWebsocket@Injectprotected MyWebsocket myWebsocket;public void sayhi(String wsid) { myWebsocket.sendJson(wsid, new NutMap("action", "layer").setv("msg", "hi"));}
另外发送文本,二进制数据的异步或同步方法,请查阅AbstractWsEndpoint的javadoc
如何定制
定制 消息处理类
即WsHandler的实例,覆盖AbstractWsEndpoint的createHandler方法就可以了.
需要注意的是, WsHandler的实例,必须实现MessageHandler.Whole或MessageHandler.Partial接口,两个接口二选一.
定制房间存储
我们内置了两个房间存储实现, 基于内存的MemoryRoomProvider和基于redis的JedisRoomProvider
默认是MemoryRoomProvider,适合中小型应用,单机.
AbstractWsEndpoint有一个属性叫 roomProvider, 把它设置成需要的实例就可以了.
0 0
- websocket nutz
- nutz
- nutz
- Nutz
- Nutz
- Nutz简介
- Why Nutz
- nutz入门
- Nutz logoJava应用框架 Nutz
- WebSocket
- WebSocket
- WebSocket
- websocket
- WebSocket
- WebSocket
- WebSocket
- WebSocket
- websocket
- 欧式距离与余弦相似度
- 欢迎使用CSDN-markdown编辑器
- nginx fpm配置
- 数据结构mooc课小结(1)
- python基础学习(1)
- websocket nutz
- 修炼Android权威指南(第一天)之
- 欧拉函数总结
- Python-文件操作
- svn
- ssh管理多个私钥
- 文件
- android第三方登录之腾讯QQ登录
- 51Nod