我正在使用龙卷风作为服务器。我希望它接收二进制数据。服务器端很简单:
import tornado.websocket
import tornado.httpserver
import tornado.ioloop
import tornado.web
class WebSocketServer(tornado.websocket.WebSocketHandler):
def open(self):
print 'OPEN'
def on_message(self, message):
print 'GOT MESSAGE: {}'.format(message)
def on_close(self):
print 'CLOSE'
app = tornado.web.Application([
(r'/', WebSocketServer)
])
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(9500)
tornado.ioloop.IOLoop.instance().start()
这个服务器只是用来可视化传入的数据,并不太特别。该服务器仅使用标准 ascii 工作,但是当它获取任何 unicode 时它会爆炸(我对假二进制数据的测试)。我使用了网站http://www.websocket.org/echo.html并将发送重定向到ws://172.0.0.1:9500/
我设置服务器的位置。然后服务器提示我一个非常讨厌的错误:
ERROR:tornado.application:Uncaught exception in /
Traceback (most recent call last):
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/tornado/websocket.py", line 303, in wrapper
return callback(*args, **kwargs)
File "test.py", line 11, in on_message
print 'GOT MESSAGE: {}'.format(message)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa1' in position 0: ordinal not in range(128)
性格是¡
,一个颠倒的!现在我知道龙卷风可以发送二进制文件,但显然不能接收?我可能犯了一些小错误,但它在哪里?