使用 Python 向所有客户端广播 WebSocket
WebSocket broadcast to all clients using Python
我正在使用一个简单的基于 Python 的网络套接字应用程序:
from SimpleWebSocketServer import WebSocket, SimpleWebSocketServer
class SimpleEcho(WebSocket):
def handleMessage(self):
if self.data is None:
self.data = ''
# echo message back to client
self.sendMessage(str(self.data))
def handleConnected(self):
print self.address, 'connected'
def handleClose(self):
print self.address, 'closed'
server = SimpleWebSocketServer('', 8000, SimpleEcho)
server.serveforever()
它会回显每个客户端发送给同一个客户端的消息,但我正在尝试将 ws 服务器收到的任何消息发送给连接到它的所有客户端。有人可以帮我吗?
我认为您想创建一个客户列表,然后以编程方式向每个客户发送消息。
因此,当新客户端连接时,将它们添加到数组中:
wss = [] # Should be globally scoped
def handleConnected(self):
print self.address, 'connected'
if self not in wss:
wss.append(self)
然后,当您收到新请求时,将消息发送给存储的每个客户端:
def handleMessage(self):
if self.data is None:
self.data = ''
for ws in wss:
ws.sendMessage(str(self.data))
希望对您有所帮助!
或者您可以这样做:
class SimpleEcho(WebSocket):
def handleMessage(self):
if self.data is None:
self.data = ''
for client in self.server.connections.itervalues():
client.sendMessage(str(self.address[0]) + ' - ' + str(self.data))
#echo message back to client
#self.sendMessage(str(self.data))
def handleConnected(self):
print self.address, 'connected'
def handleClose(self):
print self.address, 'closed'
如果客户端断开连接,则添加此项以删除,因此数组中没有充满未连接的人
def handleClose(self):
wss.remove(self)
我正在使用一个简单的基于 Python 的网络套接字应用程序:
from SimpleWebSocketServer import WebSocket, SimpleWebSocketServer
class SimpleEcho(WebSocket):
def handleMessage(self):
if self.data is None:
self.data = ''
# echo message back to client
self.sendMessage(str(self.data))
def handleConnected(self):
print self.address, 'connected'
def handleClose(self):
print self.address, 'closed'
server = SimpleWebSocketServer('', 8000, SimpleEcho)
server.serveforever()
它会回显每个客户端发送给同一个客户端的消息,但我正在尝试将 ws 服务器收到的任何消息发送给连接到它的所有客户端。有人可以帮我吗?
我认为您想创建一个客户列表,然后以编程方式向每个客户发送消息。
因此,当新客户端连接时,将它们添加到数组中:
wss = [] # Should be globally scoped
def handleConnected(self):
print self.address, 'connected'
if self not in wss:
wss.append(self)
然后,当您收到新请求时,将消息发送给存储的每个客户端:
def handleMessage(self):
if self.data is None:
self.data = ''
for ws in wss:
ws.sendMessage(str(self.data))
希望对您有所帮助!
或者您可以这样做:
class SimpleEcho(WebSocket):
def handleMessage(self):
if self.data is None:
self.data = ''
for client in self.server.connections.itervalues():
client.sendMessage(str(self.address[0]) + ' - ' + str(self.data))
#echo message back to client
#self.sendMessage(str(self.data))
def handleConnected(self):
print self.address, 'connected'
def handleClose(self):
print self.address, 'closed'
如果客户端断开连接,则添加此项以删除,因此数组中没有充满未连接的人
def handleClose(self):
wss.remove(self)