带有多余通道的大猩猩 websocket 示例? [关闭]

Posted

技术标签:

【中文标题】带有多余通道的大猩猩 websocket 示例? [关闭]【英文标题】:gorilla websocket example with a superfluous channel? [closed] 【发布时间】:2021-04-08 09:16:05 【问题描述】:

我不明白频道“完成”的原因,在这个简单的例子中

https://github.com/gorilla/websocket/blob/master/examples/echo/client.go

channel是struct类型,使用了3次

    Z41 延迟关闭(完成) Z57 案例 Z77 案例

没有人写入频道。所以 2. 和 3. 会阻塞, 据我所知。我将不胜感激任何解释 这是如何工作的。

【问题讨论】:

请将所有相关代码直接放在您的问题中。随着时间的推移,链接不可避免地会消失。 【参考方案1】:

specification says:

在调用 close 之后,并且在接收到任何先前发送的值之后,接收操作将返回通道类型的零值,而不会阻塞。

case <-done: 分支在调用 close(done) 后不会阻塞。

通常使用接近完成信号的通道,因为发出完成信号的 goroutine 不需要知道等待完成的 goroutine 的数量。此外,通道关闭永远不会阻塞等待接收者。

【讨论】:

感谢您的详细解释

以上是关于带有多余通道的大猩猩 websocket 示例? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Node Js、websockets 保存通道中的连接

带有 websocket 的 Django 框架

WebSocket学习笔记

带有打字稿的 Angular 5 websocket 示例

Django - 通过 websocket 在事件上重复发送 API 调用结果(REST 框架 + 通道)

带有棘轮的 PHP WebSockets - 示例不起作用