5

サーバーとして竜巻を使用しています。バイナリデータを受信したい。サーバー側は単純なものと同じくらい単純です。

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.htmlws://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)

文字は¡、逆さまでした!竜巻はバイナリを送信できるが、どうやら受信できないことがわかりましたか? 私はおそらく些細な間違いを犯していますが、それはどこですか?

4

1 に答える 1