[工具安装使用] [Websocket] Wesocket Client测试用例

利用okHttp中的WebSocket功能在AndroidStudio测试WebSocketClient,
其中Server是使用okHttp中的mock web server搭建的,所以在同一台机器上测试的(mock只能在本机上测试),如果没有搭server, 可以换成“ws://echo.websocket.org”测试。


build.gradle:

compile 'com.squareup.okhttp3:okhttp:3.10.0'

AndroidManifest.xml:

<uses-permission android:name="android.permission.INTERNET"/>

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/start"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:text="Start !"
        android:layout_marginTop="40dp"
        android:textSize="17sp"/>
    <TextView
        android:id="@+id/text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/start"
        android:layout_centerHorizontal="true"
        android:textSize="16sp"
        android:layout_marginTop="30dp"/>

</LinearLayout>

MainActivity.java

package com.example.websocketclient;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.WebSocket;
import okhttp3.WebSocketListener;
import okio.ByteString;



public class MainActivity extends AppCompatActivity {
    private Button start;
    private TextView textView;
    private OkHttpClient client;
    private final class testWebSocketListener extends WebSocketListener {
        private static final int NORMAL_CLOSURE_STATUS = 1000;
        @Override
        public void onOpen(WebSocket webSocket, Response response) {
            webSocket.send("Hello, it's Kris !");
            webSocket.send("What's up ?");
            webSocket.send(ByteString.decodeHex("deadbeef"));
            webSocket.close(NORMAL_CLOSURE_STATUS, "Goodbye !");
        }
        @Override
        public void onMessage(WebSocket webSocket, String text) {
            printToScreen("Receiving : " + text);
        }
        @Override
        public void onMessage(WebSocket webSocket, ByteString bytes) {
            printToScreen("Receiving bytes : " + bytes.hex());
        }
        @Override
        public void onClosing(WebSocket webSocket, int code, String reason) {
            webSocket.close(NORMAL_CLOSURE_STATUS, null);
            printToScreen("Closing : " + code + " / " + reason);
        }
        @Override
        public void onFailure(WebSocket webSocket, Throwable t, Response response) {
            printToScreen("Error : " + t.getMessage());
        }
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        start = (Button) findViewById(R.id.start);
        textView = (TextView) findViewById(R.id.text_view);
        client = new OkHttpClient();
        start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                start();
            }
        });
    }
    private void start() {
        Request request = new Request.Builder().url("ws://localhost:44740").build();

        testWebSocketListener listener = new testWebSocketListener();
        WebSocket ws = client.newWebSocket(request, listener);
       // client.dispatcher().executorService().shutdown();
    }
    private void printToScreen(final String txt) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                textView.setText(textView.getText().toString() + "\n\n" + txt);
            }
        });
    }
}

完整源代码下载:
https://download.csdn.net/download/kris_fei/10409034

猜你喜欢

转载自blog.csdn.net/kris_fei/article/details/80286681
今日推荐