我需要一些关于我写的聊天服务器中的一些小问题的帮助。如您所见,我使用全局变量“chat”来存储新提交的消息。这是因为我找不到MongoDB的工作pubsub模块(或者我只是不知道如何使用它)。因此,当2个人几乎在同一时间发送消息时,只输出较新的消息。这是我目前的代码:
#!/usr/bin/env python
import gevent
import gevent.monkey; gevent.monkey.patch_all()
from gevent.event import Event
from gevent.pywsgi import WSGIServer
from flask import Flask, request, Response, render_template, jsonify
import time
from pymongo import MongoClient
app = Flask(__name__)
app.config['DEBUG'] = True
a = Event()
chat = {}
def logchat(data):
client = MongoClient()
db = client.chatlog
db.bences.insert(data)
@app.route('/output')
def sse_request():
a.wait()
return jsonify(chat)
@app.route('/processchat', methods=['POST'])
def processchat():
global chat
ms = int(round(time.time() * 1000))
chat = {'name': request.form['chatname'], 'msg': request.form['chatmsg'], 'ts': ms}
a.set(); a.clear()
logchat(chat)
return jsonify(success=True)
@app.route('/')
def page():
return render_template('chat.html')
if __name__ == '__main__':
http_server = WSGIServer(('0.0.0.0', 80), app)
http_server.serve_forever()
你能建议我做什么?非常感谢!