java服务器开发教程 再谈websocket论架构设计

电脑杂谈  发布时间:2018-02-21 00:52:48  来源:网络整理

java服务器开发_java服务器教程推荐_java服务器开发教程

如我们所了解,http连接为一次请求一次响应(request->response),必须为同步调用方式。

而websocket为一次连接以后,会建立tcp连接,后续客户端与服务器交互为全双工方式的交互方式,客户端可以发送消息到服务端,服务端也可将消息发送给客户端。

根据上图,我们大致可以了解到http与websocket之间的区别和不同。

为什么要使用websocket

那么了解http与websocket之间的不同以后,我们为什么要使用websocket呢? 他的应用场景是什么呢?

我找到了一个比较符合websocket使用场景的描述

“The best fit for WebSocket is in web applications where the client and server need to exchange events at high frequency and with low latency.”

翻译: 在客户端与服务器端交互的web应用中,websocket最适合在高频率低延迟的场景下,进行事件的交换和处理

了解以上知识后,我举出几个比较常见的场景:

游戏中的数据传输

股票K线图数据

客服系统

根据如上所述,各个系统都来使用websocket不是更好吗?

其实并不是,websocket建立连接之后,后边交互都由tcp协议进行交互,故开发的复杂度会较高。java服务器开发教程当然websocket通讯,本身要考虑的事情要比HTTP协议的通讯考虑的更多.

所以如果不是有特殊要求(即 应用不是”高频率低延迟”的要求),需要优先考虑HTTP协议是否可以满足。

比如新闻系统,新闻的数据晚上10分钟-30分钟,是可以接受的,那么就可以采用HTTP的方式进行轮询(polling)操作调用REST接口。

当然有时我们建立了websocket通讯,并且希望通过HTTP提供的REST接口推送给某客户端,此时需要考虑REST接口接受数据传送给websocket中,进行广播式的通讯方式。

至此,我已经讲述了三种交互方式的使用场景:

websocket独立使用场景

HTTP独立使用场景

HTTP中转websocket使用场景

相关技术概念 websocket

websocket为一次HTTP握手后,后续通讯为tcp协议的通讯方式。

当然,和HTTP一样,websocket也有一些约定的通讯方式,http通讯方式为http开头的方式,e.g. ,websocket通讯方式则为ws开头的方式,e.g. ws://xxx.com/path

SSL:

HTTP: https://xxx.com/path

WEBSOCKET: wss://xxx.com/path

SockJS

正如我们所知,websocket协议虽然已经被制定,当时还有很多版本的浏览器或浏览器厂商还没有支持的很好。

所以,SockJS,可以理解为是websocket的一个备选方案。

那它如何规定备选方案的呢?

它大概支持这样几个方案:

Websockets

Streaming

Polling

当然,开启并使用SockJS后,它会优先选用websocket协议作为传输协议,如果浏览器不支持websocket协议,则会在其他方案中,选择一个较好的协议进行通讯。

看一下目前浏览器的支持情况:

所以,如果使用SockJS进行通讯,它将在使用上保持一致,底层由它自己去选择相应的协议。

可以认为SockJS是websocket通讯层上的上层协议。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-86444-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...