rfc6455-websocket

一.场景:

web应用定时拉取http数据

1.每次可能重新创建(keep-alive)

2.http带多余的请求头(浏览器)

3.单向请求

二.协议(rfc6455):

ws80 wss443

握手和数据传输

1.握手:通过http/https,兼容http

请求

GET /chat HTTP/1.1

Host: server.example.com

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==

Origin: http://example.com

Sec-WebSocket-Protocol: chat

Sec-WebSocket-Version: 13

响应

HTTP/1.1 101 Switching Protocols

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

Sec-WebSocket-Protocol: chat

2.数据传输:

数据帧(opcode)

text/二进制/连续帧

控制帧

ping pong close

三.实现:

org.java-websocket:Java-WebSocket:1.5.1

WebSocketClient类回调

onOpen()

onMessage(ByteBuffer bytes)

onClose()

onError(ex)

写数据

webSocketClient.send(ByteBuffer bytes)

四.遇到问题

1.本身内部ping和pong机制以及超时都有实现默认超时1m

2.需要支持多端

五.参看文档

https://datatracker.ietf.org/doc/rfc6455/?include_text=1

https://github.com/TooTallNate/Java-WebSocket

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值