Java实现Websocket客户端
先分享连个测试联通性的地址
http://www.blue-zero.com/WebSocket/
http://coolaf.com/tool/chattest
如上,提供了简易的服务端,可以测试验证下自己的客户端是否可以连接上服务端,服务端会将发送的消息返回给客户端。
用的是maven管理jar包依赖,所以需在pom文件中添加如下依赖
<dependency> <groupId>org.java-websocket</groupId> <artifactId>Java-Websocket</artifactId> <version>1.3.8</version> </dependency>
尝试过网上的各种版本的jar,从1.3.0~1.4.0,发现只有1.3.8版本好用。
废话不多说,直接贴代码:
package org.sang.wschat.controller; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.java_websocket.WebSocket; import org.java_websocket.client.WebSocketClient; import org.java_websocket.drafts.Draft_6455; import org.java_websocket.handshake.ServerHandshake; 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) { 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(); //logger.info(client.getDraft()); while(!client.getReadyState().equals(WebSocket.READYSTATE.OPEN)){ logger.info("正在连接..."); } //连接成功,发送信息 client.send("哈喽,连接一下啊"); } }
应该是本地创建好之后,直接就可以运行。
需要说明一点的是:
client = new WebSocketClient(new URI("ws://121.40.165.18:8800"),new Draft_6455())
代码中这个地址,也就是文章开头中,两个测试服务端的开源地址,仅仅是用来测试自己服务端的连通性。
运行结果如下: