File tree 2 files changed +19
-1
lines changed
2 files changed +19
-1
lines changed Original file line number Diff line number Diff line change @@ -303,6 +303,24 @@ WebSocket 的工作过程可以分为以下几个步骤:
303
303
304
304
另外,建立 WebSocket 连接之后,通过心跳机制来保持 WebSocket 连接的稳定性和活跃性。
305
305
306
+ ### SSE 与 WebSocket 有什么区别?
307
+
308
+ > 摘自[ Web 实时消息推送详解] ( https://javaguide.cn/system-design/web-real-time-message-push.html ) 。
309
+
310
+ SSE 与 WebSocket 作用相似,都可以建立服务端与浏览器之间的通信,实现服务端向客户端推送消息,但还是有些许不同:
311
+
312
+ - SSE 是基于 HTTP 协议的,它们不需要特殊的协议或服务器实现即可工作;WebSocket 需单独服务器来处理协议。
313
+ - SSE 单向通信,只能由服务端向客户端单向通信;WebSocket 全双工通信,即通信的双方可以同时发送和接受信息。
314
+ - SSE 实现简单开发成本低,无需引入其他组件;WebSocket 传输数据需做二次解析,开发门槛高一些。
315
+ - SSE 默认支持断线重连;WebSocket 则需要自己实现。
316
+ - SSE 只能传送文本消息,二进制数据需要经过编码后传送;WebSocket 默认支持传送二进制数据。
317
+
318
+ ** SSE 与 WebSocket 该如何选择?**
319
+
320
+ SSE 好像一直不被大家所熟知,一部分原因是出现了 WebSocket,这个提供了更丰富的协议来执行双向、全双工通信。对于游戏、即时通信以及需要双向近乎实时更新的场景,拥有双向通道更具吸引力。
321
+
322
+ 但是,在某些情况下,不需要从客户端发送数据。而你只需要一些服务器操作的更新。比如:站内信、未读消息数、状态更新、股票行情、监控数量等场景,SEE 不管是从实现的难易和成本上都更加有优势。此外,SSE 具有 WebSocket 在设计上缺乏的多种功能,例如:自动重新连接、事件 ID 和发送任意事件的能力。
323
+
306
324
## PING
307
325
308
326
### PING 命令的作用是什么?
Original file line number Diff line number Diff line change @@ -473,7 +473,7 @@ public interface BlockingQueue<E> extends Queue<E> {
473
473
Java 中常用的阻塞队列实现类有以下几种:
474
474
475
475
1 . ` ArrayBlockingQueue ` :使用数组实现的有界阻塞队列。在创建时需要指定容量大小,并支持公平和非公平两种方式的锁访问机制。
476
- 2 . ` LinkedBlockingQueue ` :使用单向链表实现的可选有界阻塞队列。在创建时可以指定容量大小,如果不指定则默认为` Integer.MAX_VALUE ` 。和` ArrayBlockingQueue ` 类似, 它也支持公平和非公平的锁访问机制 。
476
+ 2 . ` LinkedBlockingQueue ` :使用单向链表实现的可选有界阻塞队列。在创建时可以指定容量大小,如果不指定则默认为` Integer.MAX_VALUE ` 。和` ArrayBlockingQueue ` 不同的是, 它仅支持非公平的锁访问机制 。
477
477
3 . ` PriorityBlockingQueue ` :支持优先级排序的无界阻塞队列。元素必须实现` Comparable ` 接口或者在构造函数中传入` Comparator ` 对象,并且不能插入 null 元素。
478
478
4 . ` SynchronousQueue ` :同步队列,是一种不存储元素的阻塞队列。每个插入操作都必须等待对应的删除操作,反之删除操作也必须等待插入操作。因此,` SynchronousQueue ` 通常用于线程之间的直接传递数据。
479
479
5 . ` DelayQueue ` :延迟队列,其中的元素只有到了其指定的延迟时间,才能够从队列中出队。
You can’t perform that action at this time.
0 commit comments