目录
序言
准备工作
如何导入socket-io-java 框架
socket-io的基本用法.
打印socket-io中的log信息
socket-io源码解析
connect()里的都干了什么.
关于websocket的一些技术文档和文章
序言
WebSocket 协议是伴随HTML5发布的一种新协议,它实现了服务端到客户端浏览器之间的全双工通信.WebSocket常使用于IM通信等场景.当然由于其全双工的特性,也同样适用于直播弹幕这种场景.
WebSocket 大概有以下特点:
基于socket实现保证了消息通信的实时性.
提供文本和二进制数据两种格式的数据传输.
在建立连接时使用http协议,连接过程中使用ws/wss协议通信.ws占用http请求的80端口,wss占用https请求的443端口.建立连接后,websocket没有规定具体协议,需要使用者自行进行扩展.
如何导入 socket-io-java框架
WebSocket协议是伴随Html5协议发布的,最初它应该是为浏览器程序与web服务器间通信而设计的一种协议.socket-io-java是 socket.io 在java平台的客户端实现,而服务端实现则有配套的 socket-io-netty。
Eclipse下导入 socket-io jar
Android Studio 环境下导入socket-io 非常轻松方便,只需要在gradle文件中添加依赖,直接参阅 socket-io 的官方文档即可.
而某些同学和我一样,因为种种原因在eclipse下开发,就需要导入jar包了.
这里总结下我在导入jar包时遇到的坑:
除了 socket-io-client 这个jar包之外,我们还需要导入一个 engine-io-socket 的包. client包中主要包含了客户端操作websocket的api,而engine包中包含了socket-io的核心实现.
Socket-io库中的网络实现使用OkHttp实现.如果你的项目之前没有使用 OkHttp,那么你还需要额外导入 OkHttp相关的jar包.需要注意的是 okhttp-ws 这个jar包,我在maven上找到的最高版本是3.4.1.而它需要配合3.4.1版本的okhttp使用.在高版本的okhttp jar包中(例如3.8版本),是默认包括了对WebSocket的支持的,但由于我使用的是 0.8.2版本的 socket-io-java,导致与3.8版本的okhttp不兼容.所以在导入jar包时需要注意版本的问题.
image.png
socke-io的基本用法
socket = IO.socket("http://localhost");
socket.on(S