通常,我们日常开发中,用到最多的也还是http这种请求应答式的连接形式。
但是难免会遇到需要长连接的场景,这种可以考虑用websocket长连接的形式实现。
先分享一个测试连通性的网址:
http://coolaf.com/tool/chattest
这个地址提供了简易的websocket服务端,可以测试验证下自己的客户端是否可以连接上服务端,服务端会将发送的消息返回给客户端。
实现逻辑
maven依赖如下:
<dependency>
<groupId>org.java-websocket</groupId>
<artifactId>Java-WebSocket</artifactId>
<version>1.5.3</version>
</dependency>
客户端代码如下:
package com.template.websocket;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.drafts.Draft_6455;
import org.java_websocket.handshake.ServerHandshake;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.net.URI;
import java.net.URISyntaxException;
public class WebsocketClient {
private static Logger logger = LoggerFactory.getLogger(WebsocketClient.class);
public static WebSocketClient client;
public static void main(String[] args) throws InterruptedException {
try {
client = new WebSocketClient(new URI("ws://121.40.165.18:8800"),new Draft_6455()) {
@Override
public void onOpen(ServerHandshake serverHandshake) {
logger.info("握手成功");
}
@Override
public void onMessage(String msg) {
logger.info("收到消息=========="+msg);
if(msg.equals("over")){
client.close();
}
}
@Override
public void onClose(int i, String s, boolean b) {
logger.info("链接已关闭");
}
@Override
public void onError(Exception e){
e.printStackTrace();
logger.info("发生错误已关闭");
}
};
} catch (URISyntaxException e) {
e.printStackTrace();
}
client.connect();
while(!WebsocketClient.client.isOpen()){
System.out.println("正在连接,请等待...");
Thread.sleep(1000);
}
//连接成功,发送信息
client.send("哈喽,连接一下啊");
}
}
引入依赖,本地创建好客户端之后,就可以直接运行了。
需要说明一点的是:
client = new WebSocketClient(new URI("ws://121.40.165.18:8800"),new Draft_6455())
代码中这个地址,也就是文章开头中,测试服务端的开源地址,仅仅是用来测试自己客户端与websocket服务端的连通性。
联系作者
微信公众号
xiaomingxiaola
(BossLiu)
QQ群
58726094
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 384276224@qq.com