优秀的企业网站,wordpress菜单栏优化,企业邮箱怎么申请免费的,做网站能挣钱不目录 1.1 WebSocket介绍
http协议#xff1a;
webSocket协议#xff1a;
1.2WebSocket协议#xff1a;
1.3客户端#xff08;浏览器#xff09;实现
1.3.2 WebSocket对象的相关事宜#xff1a;
1.3.3 WebSOcket方法
1.4 服务端实现
服务端如何接收客户端发送的请…目录 1.1 WebSocket介绍
http协议
webSocket协议
1.2WebSocket协议
1.3客户端浏览器实现
1.3.2 WebSocket对象的相关事宜
1.3.3 WebSOcket方法
1.4 服务端实现
服务端如何接收客户端发送的请求呢
服务端如何推送数据给客户端呢 1.1 WebSocket介绍
WebSocket 是一种网络通信协议。 WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双工通信的协议。 HTTP 协议是一种无状态、无连接、单向的应用层协议。它采用了 请求/响应 模型。通信请求只能由客户端发起服务端对请求做出应答处理。单向的采用的是请求响应的模式 这种通信模型有一个弊端HTTP协议无法实现服务器主动向客户端发起消息。 这种单项请求的特点注定了如果服务器有连续的状态变化客户端要获知就非常麻烦。大多数Web应用程序将通过频繁的异步ajax请求实现长轮询。轮询效率低非常浪费资源必须不停的连接或者HTTP连接始终打开
http协议 webSocket协议 1.2WebSocket协议 WebSocket协议有两个部分握手和数据传输 握手时基于http协议在数据传输阶段基于WebSocket协议
1.3客户端浏览器实现
var ws new WebSocket(url);
//参数url格式说明 ws://ip地址:端口号/资源名称
1.3.2 WebSocket对象的相关事宜 事件 事件处理程序 描述 open websocket对象.onopen 连接建立时触发 message websocket对象.onmessage 客户端接收服务端数据时触发 error websocket对象.onerror 通信发生错误时触发 close websocket对象.onclose 连接关闭时触发
1.3.3 WebSOcket方法
WebSocket对象的相关方法 方法 描述 send() 使用连接发送数据
1.4 服务端实现
Java WebSocket应用一系列的WebSocketEndpoint组成。Endpoint是一个java对象代表WebSocket链接的一端对于服务端我们可以视为处理具体WebSocket消息的接口。【一个EndPoint对象和一个客户端产生一一对应的关系】
我们可以通过两种方式定义Endpoint
编程式继承类 javax.websocket.Endpoint并实现其方法。注解式即定义一个POJO并添加ServerEndpoint相关注解
Endpoint实例在WebSocket握手时创建并在客户端与服务端连接过程中有效最后在链接关闭时结束。在Endpoint接口中明确了定义与其生命周期相关的方法生命周期方法如下 方法 含义描述 注解 onClose 当会话关闭时调用。 OnClose onOpen 当开启一个新的会话时调用, 该方法是客户端与服务端握手成功后调用的方法。 OnOpen onError 当连接过程中异常时调用。 OnError
服务端如何接收客户端发送的请求呢
通过为Session添加MessageHandler消息处理器来接收消息当采用注解方式定义EndPoint时我们还可以通过OnMessage注解指定接收消息的方法。
服务端如何推送数据给客户端呢
发送消息则由 Remote Endpoint完成其实例由Session维护根据使用情况我们可以通过Session.getBasicRemote 获取同步消息发送的实例然后调用其 sendXxx( )方法就可以发送消息可以通过Session.getAsyncRemote获取异步消息发送实例。
下面是一个简单的案例
ServerEndpoint(/robin)
public class ChatEndPoint {private static SetChatEndPoint webSocketSet new HashSet();private Session session;OnMessagepublic void onMessage(String message, Session session) throws IOException {System.out.println(接收的消息是 message);System.out.println(session);//将消息发送给其他的用户for (Chat chat : webSocketSet) {if(chat ! this) {chat.session.getBasicRemote().sendText(message);}}}OnOpenpublic void onOpen(Session session) {this.session session;webSocketSet.add(this);}OnClosepublic void onClose(Session seesion) {System.out.println(连接关闭了。。。);}OnErrorpublic void onError(Session session,Throwable error) {System.out.println(出错了。。。。 error.getMessage());}
}