0

Web サーバーと通信し、サーバーからのプッシュ通知を必要とする Android アプリを開発しています。

このアプリは、Web サーバーとして Tornado 2.1 を使用し、Android クライアント アプリで weberknecht Websockets を使用して、期待どおりに正常に実行されます。

ただし、Tornado 3.1 では、「websocket.connect()」メソッドを呼び出そうとすると、同じアプリが常に例外を返します。

Tornado 3.1 を使用したクライアント アプリの例外:-

接続に失敗しました: 不明なステータス コード 426 原因 WebSocketException (id=830032153816)

weberknecht が最新の Tornado 3.1 と互換性がない可能性があることを stackoverflow で読みました。したがって、私は Autobahn Web ソケットに移行しました。しかし、autobahn websocket jar をインポートすると、アプリケーションは「接続」メソッドでクラッシュします。jwebsocket クライアントも試してみました。私も同じ問題に直面しています。

コードに何か不足していますか? Weberknecht は Tornado 3.1 と互換性がありませんか? Tornado 3.1 を使用するための代替手段は何ですか? または、Tornado 2.1 を続行する必要がありますか?

私のアプリケーションコード:-

public class MainActivity extends Activity  {

protected static final String TAG = null;
BaseTokenClient btc;
Toast testToast;
private  WebSocketConnection websocket; 
URI url;

private class AsyncThread extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... params) {
        try {
            websocket.connect();
        } catch (de.roderick.weberknecht.WebSocketException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return "";
    }
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    url = null;
    try {
        url = new URI("ws://192.168.1.130:8888/ws");
    } catch (URISyntaxException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    try {
        websocket =  new WebSocketConnection(url);
    } catch (de.roderick.weberknecht.WebSocketException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    // Register Event Handlers
    websocket.setEventHandler(new WebSocketEventHandler() {
            public void onOpen()
            {
                    Log.e(TAG, "--open");
                    try {
                        websocket.send("HELLO");
                    } catch (de.roderick.weberknecht.WebSocketException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
            }

            public void onMessage(WebSocketMessage message)
            {
                    Log.e(TAG, "--received message: " + message.getText());
                    System.out.println(message.getText());
            }

            public void onClose()
            {
                    Log.e(TAG, "--close"); 
            }
    });

    new AsyncThread().execute();

}

}

私のTornado Webサーバーコード:-

import tornado.httpserver
import tornado.websocket
import tornado.ioloop
import tornado.web

class WSHandler(tornado.websocket.WebSocketHandler):
    def open(self):
        print 'new connection'
        self.write_message("Hello World")

    def on_message(self, message):
        print 'message received %s' % message

    def on_close(self):
        print 'connection closed'

application = tornado.web.Application([
    (r'/ws', WSHandler),
])

if __name__ == "__main__":
    http_server = tornado.httpserver.HTTPServer(application)
    http_server.listen(8888)
    tornado.ioloop.IOLoop.instance().start()
4

1 に答える 1

0

このあたりでデバッグを行ってみてください
Tornado に到着するヘッダーと Weberknecht を離れるヘッダーを調べます

于 2013-12-12T07:00:55.567 に答える