用java写websocket客户端
来源:互联网 发布:hough变换检测圆算法 编辑:程序博客网 时间:2024/05/17 19:20
最近用websocket写一个通讯的系统,服务器用tocmat,客户端使用android,为了在android端用java进行websocket通讯在网上找个很久的资料,搜客户端出来的很多都是js实现的客户端,最合适的就是一个叫java-websocket的开源项目,用起来很简单,在这分享一下自己的一些收获
步骤
- 在项目中导入jar包或在maven项目的pom文件中添加依赖。jar包下载地址 https://github.com/TooTallNate/Java-WebSocket
maven坐标如下
<dependency> <groupId>org.java-websocket</groupId> <artifactId>Java-WebSocket</artifactId> <version>1.3.4</version> <scope>test</scope></dependency> ``` 2. 实现 WebSocketClient 接口,我为了偷懒用了匿名内部类的形式,下面是完整代码
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.ByteBuffer;
import java.nio.channels.NotYetConnectedException;
import org.java_websocket.WebSocket.READYSTATE;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.drafts.Draft_17;
import org.java_websocket.handshake.ServerHandshake;
public class Client {
public static WebSocketClient client;public static void main(String[] args) throws URISyntaxException, NotYetConnectedException, UnsupportedEncodingException { client = new WebSocketClient(new URI("ws://localhost:8080/zhihui/connect.html"),new Draft_17()) { @Override public void onOpen(ServerHandshake arg0) { System.out.println("打开链接"); } @Override public void onMessage(String arg0) { System.out.println("收到消息"+arg0); } @Override public void onError(Exception arg0) { arg0.printStackTrace(); System.out.println("发生错误已关闭"); } @Override public void onClose(int arg0, String arg1, boolean arg2) { System.out.println("链接已关闭"); } @Override public void onMessage(ByteBuffer bytes) { try { System.out.println(new String(bytes.array(),"utf-8")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } }; client.connect(); while(!client.getReadyState().equals(READYSTATE.OPEN)){ System.out.println("还没有打开"); } System.out.println("打开了"); send("hello world".getBytes("utf-8")); client.send("hello world");}public static void send(byte[] bytes){ client.send(bytes);}
}
特别要注意的就是
client = new WebSocketClient(new URI("ws://localhost:8080/zhihui/connect.html"),new Draft_17())
这个地方,我刚开始的时候
构造方法中没有传入new Draft_17(),连接一直不成功,最后知道Dratf的很多子类分表表示不同的websocket协议版本,加上之后运行成功。
阅读全文
3 1
- 用java写websocket客户端
- 用java写websocket客户端
- WebSocket客户端java代码
- Java WebSocket客户端实现
- Java API实现WebSocket客户端
- 用Python写了个websocket即时聊天网页(含客户端、服务端代码)
- java websocket网页端客户端实现
- WebSocket客户端
- websocket客户端
- webSocket客户端
- 一个用python写的websocket服务端
- Java applet 写客户端 cookie
- java写cookie到客户端
- 2、Java WebSocket实现服务端主动发消息给客户端
- Java Websocket实例【服务端与客户端实现全双工通讯】
- 用Java做客户端调用.NET写的 Web Services
- webservice中怎么样用java写客户端程序
- html5 websocket聊天室 客户端
- (四)、建造者模式
- 数据库基础知识
- php数据替换处理str_replace()函数
- 在java中int类型跟byte数组的转换
- qduoj 河神的难题 思维 实验室腊新呐 枚举
- 用java写websocket客户端
- [AHK]Bing Desktop Wallpaper Changer(必应壁纸随心换)
- JDK动态代理源码分析之二
- 正则表达式匹配
- 深入浅出理解Paxos算法
- 前谷歌首席Java架构师谈如何设优秀的API~
- RAML概述
- 得到-薛兆丰的北大经济学课-0-目录
- 建议1:理解pythonic概念