java-websocket实现客户端,即不用浏览器

本文介绍如何在Java Web项目中使用WebSocket实现从服务器到客户端的数据交互,特别是在不依赖浏览器的情况下。通过引入Java-WebSocket库,展示了WebSocket客户端的代码示例,并特别指出在处理不同版本库时需要注意的细节,如Draft_6455的选择和ReadyState.OPEN的正确使用。

最近在做一个javaweb项目,要求线上线下在一定条件下进行数据交互。

线下找线上好办,但是线上找线下就需要websocket,但由于只是数据交互并不涉及浏览器,故websocket客户端要在后台处理。网上有很多可以参考的例子,但最多的是用java-websocket.jar来处理。这里我引用的是Java-WebSocket-1.4.0.jar。

下面是websocket客户端代码


import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.ByteBuffer;

import org.java_websocket.client.WebSocketClient;
import org.java_websocket.drafts.Draft_6455;
import org.java_websocket.enums.ReadyState;
import org.java_websocket.handshake.ServerHandshake;

public class Client {
	public static String ws = "此处为服务端websocket链接";
	public static WebSocketClient client;

	//建立连接
	public static void clientconnectInit(){
		try {
			client = new WebSocketClient(new URI(ws),new Draft_6455()) {
		        @Override
		        public void onOpen(ServerHandshake arg0) {
		            System.out.println("打开链接");
		        }
		        @Override
		        public void onMessage(String arg0) {
		            System.o
Java WebSocketJava平台下用于实现实时双向通信的一种技术,它允许浏览器与服务器之间创建持久性的连接。在Java中,有一个名为javax.websocket的API提供WebSocket的支持。以下是使用这个API创建简单Java WebSocket客户端的基本步骤: 1. **添加依赖**:如果你使用的是Maven,你需要在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>javax.websocket</groupId> <artifactId>javax.websocket-api</artifactId> <version>1.1</version> </dependency> <dependency> <groupId>org.glassfish.tyrus.bundles</groupId> <artifactId>tyrus-standalone-client</artifactId> <version>1.19</version> </dependency> ``` 2. **创建`ClientEndpoint`**:这是一个Java接口,客户端实际连接会通过实现它的类。例如: ```java import javax.websocket.ContainerProvider; import javax.websocket.Session; import java.net.URI; public class MyWebSocketClient implements ClientEndpoint { // 连接成功回调 @OnOpen public void onOpen(Session session) { System.out.println("Connected to server"); } // 收到消息处理 @OnMessage public void onMessage(String message) { System.out.println("Received message: " + message); } // 关闭连接时执行 @OnClose public void onClose(int code, String reason, boolean remote) { System.out.println("Connection closed: " + reason); } } ``` 3. **启动连接**:在客户端应用中,你可以使用`ContainerProvider.getContainer()`获取WebSocket容器,然后建立到服务器的连接: ```java public static void main(String[] args) throws Exception { URI uri = new URI("ws://yourserver.com/endpoint"); ContainerProvider containerProvider = ContainerProvider.getContainer(); containerProvider.connectToServer(MyWebSocketClient.class, uri); } ``` 4. **事件监听**:客户端可以根据需要设置监听器,如错误发生时监听异常等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值