导入 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();
}
}