4.18
安卓应用中的 WebSocket 通信
WebSocket 为安卓应用提供了实时双向通信能力,以下是 Java 实现的关键步骤:
- 添加依赖
groovy
implementation 'org.java-websocket:Java-WebSocket:1.5.3' - 创建 WebSocket 客户端
java
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
import java.net.URI;
import java.net.URISyntaxException;
public class MyWebSocketClient extends WebSocketClient {
public MyWebSocketClient(String serverUri) throws URISyntaxException {
super(new URI(serverUri));
}
@Override
public void onOpen(ServerHandshake handshakedata) {
// 连接建立时调用
send("Hello, server!");
}
@Override
public void onMessage(String message) {
// 接收到消息时调用
Log.d("WebSocket", "Received: " + message);
}
@Override
public void onClose(int code, String reason, boolean remote) {
// 连接关闭时调用
Log.d("WebSocket", "Closed: " + reason);
}
@Override
public void onError(Exception ex) {
// 发生错误时调用
Log.e("WebSocket", "Error: " + ex.getMessage());
}
}
3. 在 Activity 中使用 WebSocket
java
public class MainActivity extends AppCompatActivity {
private MyWebSocketClient client;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
client = new MyWebSocketClient("ws://echo.websocket.org");
client.connect();
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (client != null && client.isOpen()) {
client.close();
}
}
public void sendMessage(String message) {
if (client != null && client.isOpen()) {
client.send(message);
}
}
}
浙公网安备 33010602011771号