Websocket android.os.NetworkOnMainThreadException-Web套接字
我正在用“Web套接字”测试聊天服务 代码没有任何错误。但是,当我午餐时,它甚至不能启动 错误Websocket android.os.NetworkOnMainThreadException-Web套接字,websocket,networkonmainthread,Websocket,Networkonmainthread,我正在用“Web套接字”测试聊天服务 代码没有任何错误。但是,当我午餐时,它甚至不能启动 错误 06-10 16:59:22.420: E/AndroidRuntime(10814): FATAL EXCEPTION: main 06-10 16:59:22.420: E/AndroidRuntime(10814): java.lang.RuntimeException: Unable to resume activity {com.websocketchat_test/com.websocke
06-10 16:59:22.420: E/AndroidRuntime(10814): FATAL EXCEPTION: main
06-10 16:59:22.420: E/AndroidRuntime(10814): java.lang.RuntimeException: Unable to resume activity {com.websocketchat_test/com.websocketchat_test.WebsocketChat}: android.os.NetworkOnMainThreadException
06-10 16:59:22.420: E/AndroidRuntime(10814): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2466)
06-10 16:59:22.420: E/AndroidRuntime(10814): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2494)
06-10 16:59:22.420: E/AndroidRuntime(10814): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2008)
06-10 16:59:22.420: E/AndroidRuntime(10814): at android.app.ActivityThread.access$600(ActivityThread.java:123)
06-10 16:59:22.420: E/AndroidRuntime(10814): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1169)
我的主要代码在这里
public class WebsocketChat extends Activity implements View.OnClickListener{
private static String SERVER_HOST = "10.0.0.1";
private WebSocket websocket;
private EditText messageEditText;
private TextView logsTextView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
messageEditText = (EditText)this.findViewById(R.id.messageEditText);
logsTextView = (TextView)this.findViewById(R.id.logsTextView);
try {
URI url = new URI("ws://" + SERVER_HOST + "/");
websocket = new WebSocketConnection(url);
websocket.setEventHandler(new WebSocketEventHandler() {
Handler handler = new Handler();
public void onOpen() {
updateLog("connected.");
}
public void onMessage(final WebSocketMessage message) {
handler.post(new Runnable() {
public void run() {
updateLog(message.getText().trim());
}
});
}
public void onClose() {
updateLog("closed");
}
});
View sendButton = this.findViewById(R.id.sendButton);
sendButton.setOnClickListener(this);
} catch (WebSocketException wse) {
wse.printStackTrace();
} catch (URISyntaxException use) {
use.printStackTrace();
}
}
@Override
public void onResume() {
super.onResume();
try {
websocket.connect();
} catch (WebSocketException wse) {
wse.printStackTrace();
}
}
public void onClick(View view) {
try {
websocket.send(messageEditText.getText().toString());
messageEditText.setText("");
} catch (WebSocketException wse) {
wse.printStackTrace();
}
}
private void updateLog(String message) {
logsTextView.setText("> " + message + "\n" + logsTextView.getText());
}
}
我不知道为什么会这样。我确实添加了互联网权限。。
任何建议都可以。请回复。最近的Android版本不允许在主/UI线程上进行任何网络活动。您可能会看到一个Android/JavaWebSocket实现,它在后台线程上完成所有网络连接
披露:我是《高速公路》的原作者,为塔文多工作。你好。我访问了该网站…但是..是否有使用websocket聊天的示例?我想在Github中下载Echoclient..但是我不能..请将文件与我的邮件一起发送给我好吗?你可以克隆Git repo或从下载压缩的存档。最接近聊天演示的示例如下:我不知道如何使用示例..正在尝试安装node.js..但不工作!!!!!!顺便说一句,修改后是否可以使用上面的代码??