【发布时间】:2018-01-31 18:56:31
【问题描述】:
我正在尝试用 Python 中的 zmq 构建一个聊天机器人。 我已经将不同的客户端连接到服务器,当客户端发送消息时,它会打印在他的终端和服务器的终端上,但不会打印在其他客户端的终端上。
我只找到了回应当前客户的方法,而不是同时回应所有人。
我所有的聊天客户端都是这样的,名字不同:
import zmq
context = zmq.Context()
# Socket to talk to server
print("Connecting to chatbot...")
socket = context.socket(zmq.REQ)
socket.connect("tcp://localhost:5555")
name = "Max"
while True:
message = input("Message: ")
socket.send_pyobj({1:[name, message]})
# Get the reply.
message2 = socket.recv_pyobj()
print("%s: %s" % (message2.get(1)[0], message2.get(1)[1]))
我的服务器是这样的:
import time
import zmq
context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind("tcp://*:5555")
while True:
# Wait for next request from client
message = socket.recv_pyobj()
print("%s: %s" % (message.get(1)[0], message.get(1)[1]))
time.sleep(1)
# Send reply back to client
socket.send_pyobj({1:[message.get(1)[0], message.get(1)[1]]})
有没有人知道一种方法,让每个客户端都能看到其他客户端的消息?
【问题讨论】:
标签: python server client zeromq pyzmq