websocket与Java实例

websocket是H5里新增的一种技术,主要用于web客户端与服务端之间建立双工通信通道,进行实时消息传输。在websocket之前,web客户端与服务器之间传递消息都是基于HTTP协议,总所周知,HTTP是一种无状态的协议,web客户端与服务端传递消息必须由客户端主动request,然后服务端返回response结果,服务端无法主动推送消息给客户端。为此,出现了轮询(polling)和Comet技术,这里不做详细介绍,有兴趣可以自己研究一下。轮询(polling)和Comet的本质还是基于HTTP的请求,虽在性能上有不少提升,但在并发量环境下,对服务器要求较高。HTML5推出的WebSocket,才真正实现了Web的实时通信,使B/S模式具备了C/S模式的实时通信能力。好了,言归正传,结合实例讲一下websocket如何使用。
1、websocket原理
webscoket也是一种基于TCP的协议,与HTTP类似。websocket实现双工通信分为两步:
(1)握手:客户端与服务器进行握手,客户端通过http协议向服务器发出握手请求,服务器响应客户端的握手请求。
客户端到服务端:

GET /demo HTTP/1.1 
Host: example.com 
Connection: Upgrade 
Sec-WebSocket-Key2: 12998 5 Y3 1 .P00 
Upgrade: WebSocket 
Sec-WebSocket-Key1: 4@1 46546xW%0l 1 5 
Origin: http://example.com 
[8-byte security key] 

服务端到客户端:

HTTP/1.1 101 WebSocket Protocol Handshake 
Upgrade: WebSocket 
Connection: Upgrade 
WebSocket-Origin: http://example.com 
WebSocket-Location: ws://example.com/demo 
[16-byte hash response]

客户端通过Upgrade命令请求服务器,把协议升级为websocket协议,并传递一个秘钥Sec-WebSocket-Key1给服务端,服务端响应请求。
(2)通信:握手完成后,客户端与服务端之间的双工通道建立成功,双方可以进行实时通信。
相比传统基于HTTP协议的通信,websocket只在发送握手请求的时候进行了一次HTTP请求,资源占用大大减少。

2、websocket支持
(1)前端websocket支持:在H5中嵌入websocket对象,实现了对websocket支持
websocket js定义:

[Constructor(in DOMString url, in optional DOMString protocol)] 
 interface WebSocket { 
   readonly attribute DOMString URL; 
        // ready state 
   const unsigned short CONNECTING = 0; 
   const unsigned short OPEN = 1; 
   const unsigned short CLOSED = 2; 
   readonly attribute unsigned sho
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会尽力用中文回答你的问题。 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。它使得客户端和服务器之间可以进行双向通信,让应用程序可以更加实时地收发数据。 HTML 是超文本标记语言,用于构建网站。Java 是一种广泛使用的计算机编程语言。 如果你想使用 WebSocket 连接 HTML 前端和 Java 后端,你需要在 HTML 前端使用 JavaScript 建立 WebSocket 连接,并在 Java 后端使用相应的库来接收和处理 WebSocket 请求。 下面是一个简单的 HTML 前端代码示例,用于建立 WebSocket 连接并发送数据: ``` <script> var socket = new WebSocket("ws://example.com/server"); socket.onopen = function(event) { console.log("WebSocket is open now."); socket.send("Hello, server!"); }; socket.onmessage = function(event) { console.log("Received message: " + event.data); }; socket.onclose = function(event) { console.log("WebSocket is closed now."); }; </script> ``` 下面是一个简单的 Java 后端代码示例,用于接收 WebSocket 请求并返回数据(使用了 JavaEE 的 javax.websocket 库): ``` @ServerEndpoint("/server") public class WebSocketServer { @OnOpen public void onOpen(Session session) { System.out.println("WebSocket opened: " + session.getId()); } @OnMessage public void onMessage(String message, Session session) { System.out.println("Received message: " + message); try { session.getBasicRemote().sendText("Hello, client!"); } catch (IOException

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值