我目前正在尝试编写一个简单的 websocket,当有人加入或离开 websocket 连接池时,它会列出每个已连接客户端的所有客户端列表。
目前我正在使用 (R)Lock 和 unlock 来确保存在并发连接,以避免连接之间的任何干扰。每当我尝试访问连接池时,我都会将其锁定,这包括对池的读取和写入,但出于某种奇怪的原因,仅当我通过一次发送 100 个并发连接来强制使用 websocket 并全部结束它们时,我会收到一个 Broken Pipe 错误.
从它的外观来看,在删除客户端并广播新的客户端列表后立即发生错误。
你能弄清楚为什么当有人失去连接时它无法将连接池发送到每个客户端吗?请记住,这仅在我通过创建 100 个连接的 for 循环来强制执行 websocket 连接时发生,并且在结束连接列表时它会失败。
我在失败的地方添加了一个注释。
另一个注意事项是,如果你们有更好的方法来发送连接池,然后通过循环遍历它并将 UUID 存储到字符串数组中,那么也可以随时告诉我它,但现在我主要专注于调试这个问题,因为我想找出我失败的地方。
Websocket 源:https ://gist.github.com/anonymous/eaaf2e5430ed694bc424