我目前正在尝试编写一个简单的websocket,当有人加入或离开websocket连接池时,它会列出每个连接客户端的所有客户端列表。
目前我正在使用(R)锁定和解锁来确保正在进行并发连接以避免连接之间的任何干扰。 每当我尝试访问连接池时,我将其锁定,这包括读取和写入池,但出于某些奇怪的原因,只有当我通过一次发送100个并发连接来强制使用websocket并且我结束它们时我得到了一个断管错误
从外观上看,错误发生在删除客户端并广播新客户端列表后。
你能弄明白为什么当某人失去连接时,它没有将连接池发送给每个客户端吗?请记住,只有当我通过创建100个连接的for循环来强制执行websocket连接时才会发生这种情况,当结束连接列表时它会失败。
我在失败的地方添加了一个注释。
另一方面的注意事项是,如果你们有更好的方式发送连接池,那么通过循环并将UUID存储到字符串数组中,然后随时告诉我它,但是现在我是' m我主要关注调试这个问题,因为我想知道我失败的地方。
Websocket来源:https://gist.github.com/anonymous/eaaf2e5430ed694bc424
压力测试来源:https://gist.github.com/anonymous/92ad79ffee1afdfd3382
答案 0 :(得分:3)
事实证明,在broadcastMessage中捕获它时,异常似乎只是一个问题(请参阅websocket源代码)。
如您所见,我在broadcastMessage函数中捕获了WriteMessage的错误。 不完全确定为什么它不是一个问题,而不是捕捉它,但我会创建另一个问题。
非常感谢那些选择阅读我遇到的问题的人!