2016-07-08 14 views
2

私はSocketioを使い始めましたが、問題がありました。私は私のフラスコのセッションに簡単なメッセージを送ることはできません。私のJavaコード:python flask-socketio TypeError: 'str'ではなくバイトのようなオブジェクトが必要です

import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.util.Log; 
import android.view.View; 

import org.json.JSONException; 
import org.json.JSONObject; 

import java.net.URISyntaxException; 

import io.socket.client.IO; 
import io.socket.client.Socket; 

public class MainActivity extends AppCompatActivity { 

    Socket socket; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     try { 
      socket = IO.socket("http://192.168.8.101:8080/send"); 
     } catch (URISyntaxException e) { 

     } 

    } 

    public void TestButton(View v){ 
     Log.d("send","before send"); 
     JSONObject obj = new JSONObject(); 
     try { 
      obj.put("message", "hi"); 
      obj.put("binary", new byte[42]); 
      socket.emit("mes", obj); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

    } 
} 

私のPythonコード:

from flask import Flask 
from flask_socketio import SocketIO 

app = Flask(__name__) 
socketio = SocketIO(app) 


@socketio.on("mes", namespace="/send") 
def chat_message(message): 
    print("message:") 


if __name__ == "__main__": 
    print("start") 
    socketio.run(app, host="0.0.0.0", port=8080) 

エラー:

TypeError: a bytes-like object is required, not 'str' <Greenlet at 0x24118773178: _handle_and_close_when_done(<bound method WSGIServer.handle of <WSGIServer at , <bound method StreamServer.do_close of <WSGIServer, (<gevent._socket3.socket [closed] object, fd=-1,)> failed with TypeError 

私は誰かがこの問題で私を助けることができることを望みます。私はどこからでも検索しましたが、私は答えを見つけることができません。

+0

Pythonエラーを投稿するときには、エラーの追加情報とコンテキストを提供する完全なスタックトレースを含めてください。 – Miguel

答えて

1

私はあなたがgeventとgevent-websocketプラグインでpython3を使うと思います。 gevent-websocketはまだpython3をサポートしていません。

現在のオプションにあります。

  1. アンインストールgeventとgevent-のWebSocketとeventletを使用しています。
  2. は私があなたを助けることを願っ

    if b'101' not in self.status: 
    

ライン236でコードgeventwebsocket/handler.pyを修正します。

関連する問題