我在Websocket中遇到了sendTextMessage的问题。我试图在连接到服务器后向服务器发送消息,但我仍然得到NUllPointerException。
我在这里包含必要的代码:
final WebSocketConnection mConnection = new WebSocketConnection();
new WebSocketConnectionHandler().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(mConnection.isConnected()){
Data joinData=new Data("join",playerId+"");
try{mConnection.sendTextMessage(gson.toJson(joinData));}
catch (Exception e){
e.printStackTrace();
}
Log.d("SENTTTTTTT:",gson.toJson(joinData));
}
Log.d("here:","after scoket");
在WebSocketConnectionHandler中,我在连接到服务器后创建连接并打印日志消息。
D/connecteddddd﹕ ws://192.168.0.107:8080/spring-websocket-test/game
W/System.err﹕ java.lang.NullPointerException
W/System.err﹕ at de.tavendo.autobahn.WebSocketConnection.sendTextMessage(WebSocketConnection.java:137)
W/System.err﹕ at com.example.tic.WebSocketTic.<init>(WebSocketTic.java:90)
D/SENTTTTTTT:﹕ {"action":"join","playerId":"0","turn":false}
D/here:﹕ after scoket
我真的无法理解为什么在检查if(mConnection.isConnected())
条件后我得到NullPointerException。 (即使从日志中也很清楚,在发送消息之前建立了连接)。
有人可以告诉我我这样做的方式有什么问题吗?这样做的正确方法是什么?
修改:
相应的de.tavendo.autobahn.WebSocketConnection.sendTextMessage
代码为:
protected WebSocketWriter mWriter;
public void sendTextMessage(String payload) {
mWriter.forward(new WebSocketMessage.TextMessage(payload));
}
谢谢:)