从服务器到客户端的请求

时间:2017-02-21 08:07:25

标签: websocket

我已经了解了网络套接字,它们很棒,它们的问题在于它们必须保持连接打开才能进行通信。

我有一个小型系统,服务器必须不时更新状态并通知客户端,并保持每个客户端的连接打开不是那么理想。同时非常重要的是客户端的更新要及时进行。

所以我的问题是,如果服务器有唯一的地址,客户端是否有公共临时地址,服务器可以发送请求?因此,当客户端连接到服务器时,它将提供它的唯一地址,服务器将对其进行缓存,当有更新时,服务器会将请求发送到该地址吗?

我知道有很多问题,因为地址会不断变化,但这已经是另一个问题了。

1 个答案:

答案 0 :(得分:1)

如果客户端没有专用IP地址,则除非与其中的任何节点建立开放连接,否则它无法从WAN获得。

当来自本地网络的客户端向服务器发送请求时,它(客户端)路由器会记住客户端的本地IP地址和端口,并使用NAT协议将其转换为路由器之一&#39 ; s。空闲端口,然后使用路由器自己的发送方的IP地址进一步发送数据'在IP协议标题和发件人的端口'在TCP标题中。当路由器获得服务器的响应时,它使用来自其内存的NAT表来转换地址并将数据传送到客户端。地址通常保存在NAT表中,而服务器和客户端之间的连接是打开的。因此,如果服务器和本地网络客户端之间没有打开的连接,则服务器将无法与客户端连接,因为服务器不知道如何访问它。

你说你的系统很小。为什么你认为你的服务器上没有足够的空闲端口来处理websockets?如果您只想从服务器获取更新(不是通过持久打开的连接发送和获取数据),您可能会发现长轮询或SSE更合适。它实际上比websockets更容易实现。