gpt4 book ai didi

聊天中的 Flash socket

转载 作者:行者123 更新时间:2023-12-03 11:56:56 25 4
gpt4 key购买 nike

我听到很多关于人们在聊天和其他长轮询应用程序中使用闪存套接字的消息。

为什么在这些场景中使用闪存?

最佳答案

业绩 , 因为 Flash 为开发者提供了 Sockets .使用 Sockets,您可以打开连接并保持打开状态,直到客户端离开应用程序。当服务器中有新信息时,它会将数据写入通信 channel ,客户端会自动读取它。无需拉取,无需连接开销,无需额外数据(例如 HTTP 协议(protocol) header )。

网络延迟和带宽将限制您的服务器可以发送的数据量。它还将限制您的客户端可以读取的数据量。关于服务器,资源量(通常是 RAM 内存)限制了您允许保持的事件连接(同时打开)的数量。

当 HTTP 用于聊天(或另一个长轮询)应用程序时,通信是无状态的,这意味着应用程序必须在每次必须交换数据时打开与服务器的新连接。您可以使用persistent connection (Keep-Alive) 重用现有连接,但根据超时时间,它会损害服务器性能:

  • 高超时值 :使用单个连接交换更多数据,但它会占用多个服务器进程或线程太长时间。服务器将同时支持更少的用户。
  • 低超时值 :服务器进程会很快释放以服务另一个请求,因为它们会更早地断开您的连接,但是如果超时时间太短,您最终将不会重用连接,这会导致每次您必须交换数据时都会建立一个新连接。很坏。

  • 此外,HTTP 协议(protocol)不是为实时通信而设计的。它需要基于文本的 header ,在通信时会浪费大量的字节。我写了一个 article比较 Smartfox Server 的不同通信协议(protocol),我注意到在基于文本的协议(protocol)(XML、JSON)中,标题(和补充)表示 50-75% 在我的情况下的消息大小;尽管消息“纯”数据非常小(28 字节),但它给出了 header 开销的概念。

    如果您在整个通信时间内保持 channel 打开并以二进制形式交换数据,则可以避免连接开销并可以调整消息以实现高吞吐量。

    通知 : 今天你可以使用 WebSockets以达到过去只能通过 Flash 通信才能实现的结果。 Socket.io例如,使用 javascript 在每个浏览器上启用实时连接;在后台,它使用 WebSockets(如果可用)、Flash、AJAX 或浏览器支持的其他技术进行通信。

    关于聊天中的 Flash socket ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7771468/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com