通过socket轮询服务器消息队列,但多客户端会出现互相读取
服务器是使用socketserver实现的多客户端TCP连接,由于服务器执行任务会产生多条消息,把消息放到queue队列中,客户端每隔0.5s轮询获取,单客户端连接获取没问题,但多客户端就会出现queue队列数据部分出现在客户端A,部分出现在客户端B
想请问有没有什么好的想法解决这个问题?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我已经解决了这个问题:
每个客户端访问时创建一个queue队列对象,把queue传递给客户端请求时调用的函数,
这样所有客户端请求的就是独立的队列对象,互不影响。
服务器的消息字节串里带上【客户端ip地址前缀】,然后存进queue;
客户端从queue中get()到消息后,检测ip前缀是否与自己相符,若不相符则重新put()进queue中。