我正在制作匿名聊天应用程序,类似于“聊天”。我的方法而不是使用套接字是使用REST API,但添加一点扭曲。当用户发出请求(例如POST /搜索(找到匹配项))时,服务器会保留该请求,直到另一个用户发送POST /搜索。一旦两个人完成了这个操作,就会响应这两个请求,让客户知道切换到聊天页面。这也是通过待处理的GET /事件请求完成的,只有在发送任何新事件时才会由服务器响应。
这在理论上与这个应用程序的流程非常有效;但是,由于我使用的是SimpleHTTPServer--这是一个非常基本的库 - 请求不是异步处理的。这意味着如果我阻止一个请求直到满足信息要求,则不能接受任何其他请求。对于这种项目,我真的不想花时间学习一个全新的库/子语言来进行异步请求处理,所以我想弄清楚如何做到这一点。
def waitForMatch(client):
# if no other clients available to match:
if not pendingQueue:
# client added to pending queue
pendingQueue.append(client)
client["pending"] = True
while client["pending"]:
time.sleep(1)
# break out and let the other client's waitForMatch call create the chatsession
return
# now there's a client available to match
otherClient = pendingQueue.pop()
otherClient["pending"] = False
# chat session created
createChatSession(otherClient, client)
这是我目前拥有的代码,不适用于非异步请求。