websocket (html5新规范)
来源:互联网 发布:长沙理工大学网络认证 编辑:程序博客网 时间:2024/06/10 02:23
WebSocket是HTML5规定的新协议。它允许服务端向客户端实时推送新消息;当然,客户端也可以通过websocket实时向server发消息。
应用场景:聊天。user1向user2发消息,用服务器中转,那么server就要向client实时推送。
@javax.websocket.server.ServerEndpoint
该注解作用在类上,注解的value参数指定了建立连接的URL路径。
//以该注解为例,那么真实地址就是ws://host:port/project/websocket/chat
@ServerEndpoint(value = "/websocket/chat")
@javax.websocket.OnOpen
作用在函数上,注入参数javax.websocket.Session。
@javax.websocket.OnClose
作用在函数上。
@javax.websocket.OnMessage
作用在函数上。注入参数String。
void javax.websocket.RemoteEndpoint.Basic.sendText(String text)
此函数用于发消息。
@javax.websocket.OnError
应用场景:聊天。user1向user2发消息,用服务器中转,那么server就要向client实时推送。
1.js部分
//建立连接var url="ws://yichudu.com/yichuMessage/websocket/chat";var webSocket = new WebSocket(url);//绑定事件webSocket.onopen=function(){/*建立连接后的操作*/}webSocket.onmessage = function(event) {/*收到信息后的操作*/}webSocket.onclose = function() {/*断开连接后的操作*/}//发送消息,以json为例webSocket.send(JSON.stringify(msg));
1.1 例子
<html><script>url='ws://localhost:7002/websocket'var webSocket = new WebSocket(url);webSocket.onopen = function() {console.log('WebSocket has been connected');webSocket.onmessage = function(event) {console.log('receive:'+event.data);}webSocket.onclose = function() {console.log('WebSocket has been disconnected。');}}</script></html>
2.server部分
需要tomcat支持,以tomcat8为例。用eclipse建立一个Dynamic Web Project。@javax.websocket.server.ServerEndpoint
该注解作用在类上,注解的value参数指定了建立连接的URL路径。
//以该注解为例,那么真实地址就是ws://host:port/project/websocket/chat
@ServerEndpoint(value = "/websocket/chat")
@javax.websocket.OnOpen
作用在函数上,注入参数javax.websocket.Session。
@javax.websocket.OnClose
作用在函数上。
@javax.websocket.OnMessage
作用在函数上。注入参数String。
void javax.websocket.RemoteEndpoint.Basic.sendText(String text)
此函数用于发消息。
@javax.websocket.OnError
作用在函数上。注入参数Throwable。异常的时候会调用。
2.1 例子
package com.yichudu.qa.websocket;import java.io.IOException;import java.util.Set;import java.util.concurrent.CopyOnWriteArraySet;import javax.websocket.OnClose;import javax.websocket.OnError;import javax.websocket.OnMessage;import javax.websocket.OnOpen;import javax.websocket.Session;import javax.websocket.server.ServerEndpoint;import org.apache.log4j.Logger;import org.springframework.stereotype.Component;@ServerEndpoint(value = "/websocket")public class MyWebSocket {Logger logger =Logger.getLogger(MyWebSocket.class);//静态变量,用来记录当前在线连接数。 private static int onlineCount = 0; //concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。 private static Set<MyWebSocket> webSocketSet = new CopyOnWriteArraySet<MyWebSocket>(); //与某个客户端的连接会话,需要通过它来给客户端发送数据 private Session session; /** * 连接建立成功调用的方法*/ @OnOpen public void onOpen(Session session) { this.session = session; webSocketSet.add(this); //加入set中 onlineCount++; logger.info("有新连接加入!当前在线人数为" +onlineCount); try { sendMessage("ni hao"); } catch (IOException e) { logger.error("IO异常"); } } @OnClose public void onClose() { webSocketSet.remove(this); //从set中删除 onlineCount--; logger.info("有一连接关闭!当前在线人数为" + onlineCount); } @OnMessage public void onMessage(String message) { logger.info("来自客户端"+session.getId()+"的消息:" + message); } @OnError public void onError(Throwable error) { logger.error(error); } void sendMessage(String text) throws IOException{ session.getBasicRemote().sendText(text); }}
0 0
- websocket (html5新规范)
- HTML5新特性之WebSocket
- HTML5新特性之WebSocket
- WebSocket API HTML5规范翻译(部分)
- WebSocket的原理,以及和Http的关系 一、WebSocket是HTML5中的协议,支持持久连接;而Http协议不支持持久连接。 首先HTMl5指的是一系列新的API,或者说新规范,
- WebSocket 规范
- WebSocket 规范
- Html5系列(四)新规范
- 1-5:HTML5新的语法规范
- 【Html5 WebSocket】WebSocket事件
- html5 websocket
- html5 websocket
- HTML5 WebSocket
- HTML5 webSocket
- HTML5 WebSocket
- html5 websocket
- html5 WebSocket
- html5 websocket
- 堆排序解析
- 问题记录
- 获取指定字符前/后的字符串
- zoj1586 QS Network(最小生成树)
- 提高 ASP.NET Web 应用性能的 24 种方法和技巧
- websocket (html5新规范)
- Oracle 分块导出数据备份
- UDP调用connect
- raid技术的介绍跟总结
- ArrayBlockingQueue解析
- 【burnside引理】
- 取消UITableViewSection黏滞,让Section跟着滑动
- Oracle 根据sid查询pid
- Codeforces Round #341 (Div. 2)-B. Wet Shark and Bishops(暴搜+组合)