我基本上构建了一个可视跟踪路由应用程序。跟踪路由基本上是使用python代码完成的,结果使用Web套接字实时发送到HTML页面。我基本上需要进行长轮询(服务器接收一个请求,处理它并定期或不定期地向每个客户端发送最多30个回复),以及处理多个客户端。我基本上操纵下面的代码来为我的应用程序工作。我找到了来自Asynchronous Bottle Framework
的代码from bottle import request, Bottle, abort
app = Bottle()
@app.route('/websocket')
def handle_websocket():
wsock = request.environ.get('wsgi.websocket')
if not wsock:
abort(400, 'Expected WebSocket request.')
while True:
try:
message = wsock.receive()
wsock.send("Your message was: %r" % message)
except WebSocketError:
break
from gevent.pywsgi import WSGIServer
from geventwebsocket import WebSocketHandler, WebSocketError
server = WSGIServer(("0.0.0.0", 8080), app,
handler_class=WebSocketHandler)
server.serve_forever()
它适用于单个请求。当我发出第二个..'wsock.send()'失败...它显示套接字死错误。有人可以指导我,如何处理多个客户端。比如,我应该为每个客户生成不同的流程吗?如果客户端请求跟踪一个域,并且再次(在向他提供完整结果之前)请求另一个域,该怎么办?谢谢你的建议
客户端代码:
<script type="text/javascript">
var ws = new WebSocket("ws://example.com:8080/websocket");
ws.onopen = function() {
ws.send("Hello, world");
};
ws.onmessage = function (evt) {
alert(evt.data);
};