Android websocket连接失败

时间:2016-07-27 15:55:25

标签: android sockets websocket

我正在开发一个简单的应用程序,它应该连接到websocket服务器并发送简单的文本消息。我使用nv-websocket-client作为websocket的库。我似乎无法连接到服务器。我已经使用wireshark来确定设备没有接收到任何数据,并且没有数据通过我使用的任何端口进入,所以我留下了这样的事实:'这个应用程序有问题。

    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。图书馆的文档似乎并没有给我很多关于错误的信息。感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

  1. 为什么在致电WebSocketListener方法之前没有注册connect()

  2. 您的connectWebsocket(View)方法何时被调用?确保在connectWebsocket(View)之前调用ws.sendText("Sending Message...")。换句话说,在将消息发送到服务器之前,请确保已建立WebSocket连接。