Android websocket连接失败
问题描述:
我正在开发一个简单的应用程序,它只是应该连接到websocket服务器并发送简单的文本消息。我使用nv-websocket-client作为websocket的库。我似乎无法连接到服务器。我使用wireshark来确定设备没有收到数据,也没有数据通过我使用过的任何端口进入,所以我留下了应用程序出现问题的事实。Android websocket连接失败
public class MainActivity extends AppCompatActivity{
private static final String SERVER = "ws://192.168.2.177:80";
private static final int TIMEOUT = 5000;
WebSocketFactory factory = new WebSocketFactory();
WebSocket ws;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void connectWebsocket(View view) throws IOException{
ws = factory.createSocket(SERVER);
try{ws.connect();}
catch (OpeningHandshakeException e){
Log.d("OpeningHandshake", "Hello");
}
catch (WebSocketException e1){
Log.d("WebsocketException",e1.getError().toString());
}
}
public void sendMessage(View view){
ws.sendText("Sending Message...");
}
}
这是我的主要活动。 这是我的布局。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="com.company.websockettest.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Socket Test" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Press to connect"
android:onClick="connectWebsocket"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Press To send"
android:onClick="sendMessage"/>
</LinearLayout>
我得到一个SOCKET_CONNECT_ERROR。而图书馆的文件似乎并没有给我太多的错误本身。感谢任何帮助,我可以得到。
答
你为什么不一个
WebSocketListener
调用connect()
方法之前注册?什么时候调用
connectWebsocket(View)
方法?确保在ws.sendText("Sending Message...")
之前调用connectWebsocket(View)
。换句话说,确保在将消息发送到服务器之前建立WebSocket连接。
从服务器中删除ws://。 – greenapps
我试过了。我也收到如下错误。 “引起:java.lang.IllegalArgumentException:索引0处的方案中的非法字符:192.168.2.177:8000” –