直接挂样例链接:
SpringBoot+Netty-socketio实现websocketwww.jianshu.com![9afc3b02478c66d7fbc17c2db1663641.png](https://i-blog.csdnimg.cn/blog_migrate/ed65683f7bf85d79bf427c2cd0605dcb.jpeg)
![9510a9a335da942e06aa662b28c371f1.png](https://i-blog.csdnimg.cn/blog_migrate/d84ac32eaee7145bbcc569e4fa9ae3b4.png)
这两个例子足够开发出socket服务,我只是补充几个坑。
1、socket服务默认地址有/http://socket.io,前端建议使用
import
npm链接地址如下:
socket.io-clientwww.npmjs.com![6ef88bd6df6b9997426eb93d955012a8.png](https://i-blog.csdnimg.cn/blog_migrate/2c8ba836100d0f22a39a9b98f2f75a4a.jpeg)
你只需要在前端页面声明:
const
就可以生成socket对象了。
有时候后端会报错
Blocked
其实就是请求地址不对,前端不要自写Websocket对象,因为前后端websocket通信有好多预设参数,自实现需要挨个校对,这个socket包已经与维护好了通用参数,性能和容错都还可以。
2、socket onConnect 获取超链接参数方式
@OnConnect
补充:
1、逻辑稍微复杂,需要命名空间(namespace)介入时,用 @OnConnect 等注解时并没有太好的兼容方案,需要自写namespace监听。这时候就不要用注解了。
2、
<!-- com.corundumstudio.socketio " netty-socketio -->
<dependency>
<groupId>com.corundumstudio.socketio</groupId>
<artifactId>netty-socketio</artifactId>
<version>1.7.17</version>
</dependency>
该版本以下的jar包存在bug,在于socket.io-client搭配使用时,如果使用namespace类型的url,无法识别。该bug已经过官方认可,并在1.7.17之后解决掉。
3、浏览器问题需要后端socketConfig.setOrigin来解决,切polling发消息模式不适用,以websocket发消息模式可以解决。