我有一个进程,基本上是长轮询实现的一部分。简而言之,客户端向服务器发出请求,服务器创建一个通道并将其返回给该客户端。该通道将包含客户端请求的信息。由于这是用于长轮询的,客户端请求的信息可能会更改。如果信息更改,服务器将更新写入通道,理论上,客户端可以获取更新并反映出来。
我面临的问题是可能会出现大量通道,这可能会在更新发生时导致不必要的处理。我可能会更新客户端不再关心的通道。
我的解决方案是,一旦客户端不再关心信息,它就关闭通道,通道会以某种方式通知服务器,并防止服务器进行额外的处理和更新。
服务器如何知道通道是否关闭?在这种情况下,服务器基本上是一个写入者,不从通道中读取任何内容。此外,所有写入方法都包装在go块中,因此始终返回一个通道(我没有看到任何nil)。是否有办法做到这一点,或者我的方法完全错误?
谢谢
我面临的问题是可能会出现大量通道,这可能会在更新发生时导致不必要的处理。我可能会更新客户端不再关心的通道。
我的解决方案是,一旦客户端不再关心信息,它就关闭通道,通道会以某种方式通知服务器,并防止服务器进行额外的处理和更新。
服务器如何知道通道是否关闭?在这种情况下,服务器基本上是一个写入者,不从通道中读取任何内容。此外,所有写入方法都包装在go块中,因此始终返回一个通道(我没有看到任何nil)。是否有办法做到这一点,或者我的方法完全错误?
谢谢