全部,我使用flask / uWSGI实现websockets。这被归结为在主应用程序中实例化的模块。服务器和模块的编辑代码:
main.py
from WSModule import WSModule
app = Flask(__name__)
wsmodule = WSModule()
websock = WebSocket(app)
@websock.route('/websocket')
def echo(ws):
wsmodule.register(ws)
print("websock clients", wsmodule.clients)
while True: # This while loop is related to the uWSGI websocket implementation
msg = ws.receive()
if msg is not None:
ws.send(msg)
else: return
@app.before_request
def before_request():
print ("app clients:",wsmodule.clients)
和 WSModule.py :
class WSModule(object):
def __init__(self):
self.clients = list()
def register(self, client):
self.clients.append(client)
问题:当用户使用websockets连接(进入' / websocket'路由)时,wsmodule.register会附加其连接套接字,这样可以正常打印&#39 ; websocket客户'显示附加的连接。 问题是我无法从主应用程序访问这些套接字。这可以通过“应用客户端”看到。从不更新的打印输出(列表保持空白)。有些东西显然正在更新,但如何访问这些变化?
答案 0 :(得分:1)
听起来您的程序正在使用threads
或processes
运行,并且正在运行的每个wsmodule
/ thread
都存在process
。
因此,正在使用客户端信息更新一个wsmodule
,而正在向客户端询问另一个{...},但被询问的人仍为空。
如果您使用的是threads
,请查看thread local storage。