【发布时间】:2016-03-04 16:06:33
【问题描述】:
我对 tornado 框架比较陌生,到目前为止,事情一直很混乱,尤其是在处理 Web 套接字时。到目前为止,我的代码如下所示:
import tornado.options
import tornado.web
import tornado.websocket
import tornado.ioloop
from tornado.options import options, define
define(name='port', default=8000, help='.', type=int)
class WSHandler(tornado.websocket.WebSocketHandler):
clients = []
def open(self):
WSHandler.clients.append(self)
self.write('client connected')
def on_close(self):
WSHandler.clients.remove(self)
self.write('client removed')
def on_message(self, message):
for client in WSHandler.clients:
WSHandler.client.write_message(message)
def check_origin(self, origin):
return True
if __name__ == '__main__':
tornado.options.parse_command_line()
application = tornado.web.Application(
handlers=[
(r'/webSocket', WSHandler),
],
)
application.listen(options.port)
tornado.ioloop.IOLoop.instance().start()
并且 javascript 文件看起来像这样
var ws = new WebSocket("ws://localhost:8000/webSocket")
ws.onopen = function() {
ws.setData('Hello World');
};
ws.onmessage = function(evt) {
ws.send(evt.data);
};
我目前正在阅读“Tornado 简介”一书,并意识到某些内容现在已被弃用。我确实下载了 git-hub 上提供的演示,并尝试了解 websocket 演示。
我尝试创建一个简单的 websocket 应用程序,但它所做的只是给我这个错误:
Can "Upgrade" only to "WebSocket"
另外,我还有一个关于龙卷风的问题
_() 是什么意思?文档中给出的示例是
_("A person liked this", "%(num)d people liked this", len(people)) % {"num": len(people)}
如果人中只有一个人,这应该返回“有人喜欢这个”。我不太明白这是怎么回事
如果我犯了一个非常明显的错误,我深表歉意
【问题讨论】:
-
我们遇到了类似的问题,因为我们正在从代理后面的网络进行测试。代理正在删除标头
Connection: Upgrade。看到这个answer
标签: javascript python websocket tornado