Androidでwebsocketを介して接続する方法を学ぼうとしています。Websocket クライアントを使用してサーバーにメッセージを送信し、それを画面に表示しようとしています。
アプリケーションを起動できますが、メッセージを入力して送信ボタンをクリックすると、次のエラーが表示されます: org.java_websocket.exceptions.WebsocketNotConnectedException
ここに私の MainActivity クラスがあります:
public class MainActivity extends AppCompatActivity {
private TextView userView;
private ListView listView;
private EditText textToSend;
private Button sendButton;
private WebClient webClient;
private JSONObject jsonObject;
private URI uri;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
userView = (TextView) findViewById(R.id.userView);
listView = (ListView) findViewById(R.id.listView);
textToSend = (EditText) findViewById(R.id.textToSend);
sendButton = (Button) findViewById(R.id.sendButton);
try {
uri = new URI("http://127.0.0.1:8080/chat");
} catch (URISyntaxException e) {
e.printStackTrace();
}
webClient = new WebClient(uri);
webClient.connect();
sendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
jsonObject = new JSONObject();
try {
jsonObject.put("message",textToSend.toString());
} catch (JSONException e) {
e.printStackTrace();
}
webClient.send(jsonObject.toString());
}
});
}
}
WebClient クラスは次のとおりです。
public class WebClient extends WebSocketClient {
public WebClient(URI serverURI) {
super(serverURI);
}
@Override
public void onOpen(ServerHandshake handshakedata) {
Log.e("Websocket", "Opened");
}
@Override
public void onMessage(String message) {
}
@Override
public void onClose(int code, String reason, boolean remote) {
}
@Override
public void onError(Exception ex) {
}
}
これは、送信ボタンをクリックした後の logcat です。
--------- クラッシュの始まり 10-30 20:09:50.830 2682-2682/example.com.chatapp E/AndroidRuntime: 致命的な例外: メイン プロセス: example.com.chatapp、PID: 2682 org. java_websocket.exceptions.WebsocketNotConnectedException org.java_websocket.WebSocketImpl.send(WebSocketImpl.java:566) org.java_websocket.WebSocketImpl.send(WebSocketImpl.java:543) org.java_websocket.client.WebSocketClient.send(WebSocketClient.java: 171) ziad.example.com.chatapp.MainActivity$1.onClick(MainActivity.java:60) で android.view.View.performClick(View.java:5637) で android.view.View$PerformClick.run(View. java:22429) で android.os.Handler.handleCallback(Handler.java:751) で android.os.Handler.dispatchMessage(Handler.java:95) で android.os.Looper.loop(Looper.java:154) でandroid.app.ActivityThread.main(ActivityThread.java:6119) com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) の java.lang.reflect.Method.invoke(ネイティブ メソッド) com.android.internal.os.ZygoteInit.main( ZygoteInit.java:776)