Android 连接WebSocket

导入   implementation "org.java-websocket:Java-WebSocket:1.4.0"

import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.IBinder;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import com.example.administrator.myapplication.R;

public class WebSocketActivity extends Activity implements View.OnClickListener {
    Button buttona, buttonb;
    private JWebSocketClientService jWebSClientService;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_web_socket);
        buttona = findViewById(R.id.line);
        buttonb = findViewById(R.id.canle);
        buttona.setOnClickListener(this);
        buttonb.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        int id = v.getId();
        switch (id) {
            case R.id.line:
                bindService();
                break;
            case R.id.canle:
                jWebSClientService.closeWebSocket();
                break;
        }
    }
    private ServiceConnection serviceConnection = new ServiceConnection() {
        @Override
        public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
            //服务与活动成功绑定
            Log.e("MainActivity", "服务与活动成功绑定");
            jWebSClientService = ((JWebSocketClientService.JWebSocketClientBinder) iBinder).getService();
        }

        @Override
        public void onServiceDisconnected(ComponentName componentName) {
            //服务与活动断开
            Log.e("MainActivity", "服务与活动成功断开");
        }
    };



    /**
     * 绑定服务
     */
    private void bindService() {
        Intent bindIntent = new Intent(WebSocketActivity.this, JWebSocketClientService.class);
        bindService(bindIntent, serviceConnection, BIND_AUTO_CREATE);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        unbindService(serviceConnection);
    }
}
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.drafts.Draft_6455;
import org.java_websocket.handshake.ServerHandshake;
import java.net.URI;

/**
 * Created by Administrator on 2019/7/5 0005.
 */

public class JWebSocketClient extends WebSocketClient {


    public JWebSocketClient(URI serverUri) {
        super(serverUri, new Draft_6455());
    }

    @Override
    public void onOpen(ServerHandshake handshakedata) {
        System.out.println("onOpen()打开通道==" + handshakedata.getHttpStatus());
    }

    @Override
    public void onMessage(String message) {
        System.out.println("onMessage()=="+message);

    }

    @Override
    public void onClose(int code, String reason, boolean remote) {
        System.out.println("onClose()=="+code+",reason=="+reason);

    }

    @Override
    public void onError(Exception ex) {
        System.out.println("onError()=="+ex.getMessage());

    }
}
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import java.net.URI;

/**
 * Created by Administrator on 2019/7/5 0005.
 */

public class JWebSocketClientService extends Service {
    private URI uri= URI.create("地址");
    private JWebSocketClientBinder mBinder = new JWebSocketClientBinder();

    //用于Activity和service通讯
    class JWebSocketClientBinder extends Binder {
        public JWebSocketClientService getService() {
            return JWebSocketClientService.this;
        }
    }

    @Override
    public void onCreate() {
        super.onCreate();
        try {
            client.connectBlocking();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }


    public void closeWebSocket(){
        if(null !=client)
            client.close();
    }

    @Override
    public IBinder onBind(Intent intent) {
        return mBinder;
    }

    JWebSocketClient client = new JWebSocketClient(uri) {
        @Override
        public void onMessage(String message) {
            System.out.println("JWebSClientService=="+message);
        }
    };

    @Override
    public void onDestroy() {
        super.onDestroy();
        client.close();
    }
}
发布了180 篇原创文章 · 获赞 27 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/sinat_28238111/article/details/94736785