5.6 engine.io的代码实现
熟悉了engine.io协议之后,我们看看代码是怎么实现主流程的。
客户端的engine.io的主要实现流程我们在上面文字介绍了。
结合代码engine.io,画了这么一个客户端流程图:
服务端的代码和客户端非常相似,其实现流程图如下:
6、SSE6.1 本节引言本文前两节分析了WebSocket和socket.io,现在我们来看看SSE。
很多人也许好奇,有了WebSocket这种实时通信,为什么还需要SSE呢?
答案其实很简单:那就是SSE其实是单向通信,而WebSocket是双向通信。
比如:在股票行情、新闻推送的这种只需要服务器发送消息给客户端场景中,使用SSE可能更加合适。
另外:SSE是使用HTTP传输的,这意味着我们不需要一个特殊的协议或者额外的实现就可以使用。而WebSocket要求全双工连接和一个新的WebSocket服务器去处理。加上SSE在设计的时候就有一些WebSocket没有的特性,比如自动重连接、event IDs、以及发送随机事件的能力,所以各有各的特长,我们需要根据实际应用场景,去选择不同的应用方案。
6.2 SSE介绍SSE的简单模型是:一个客户端去从服务器端订阅一条“流”,之后服务端可以发送消息给客户端直到服务端或者客户端关闭该“流”,所以SSE全称叫“server-sent-event”。
相比以前的轮询,SSE可以为B2C带来更高的效率。
有一张图片画出了二者的区别: