Android websocket连接失败

Posted

技术标签:

【中文标题】Android websocket连接失败【英文标题】:Android websocket connection failure 【发布时间】:2016-07-27 15:55:25 【问题描述】:

我正在开发一个简单的应用程序,它只是应该连接到 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);
        tryws.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_
        android:layout_
        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_
            android:layout_
            android:text="Socket Test" />
        <Button
            android:layout_
            android:layout_
            android:text="Press to connect"
            android:onClick="connectWebsocket"/>
        <Button
            android:layout_
            android:layout_
            android:text="Press To send"
            android:onClick="sendMessage"/>
    </LinearLayout>

我收到 SOCKET_CONNECT_ERROR。图书馆的文档似乎并没有给我太多关于错误本身的信息。感谢我能得到的任何帮助。

【问题讨论】:

从服务器中删除 ws://。 我试过了。我也收到如下错误。 " 原因:java.lang.IllegalArgumentException: 索引 0 处的方案中的非法字符:192.168.2.177:8000" 【参考方案1】:

    为什么不在调用@987654322@方法之前注册一个@987654321@

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

【讨论】:

以上是关于Android websocket连接失败的主要内容,如果未能解决你的问题,请参考以下文章

无法启动连接:错误:WebSocket 连接失败

由于 BoringSSL 证书验证失败,iOS 上的安全 websocket 连接失败

抑制“与 'xyz' 的 WebSocket 连接失败”

WebSocket 连接失败。 WebSocket握手期间出错-socketjs

websocket连接失败?

WebSocket 连接到 'ws:url' 失败:WebSocket 在连接建立之前关闭