当前位置: 首页 > news >正文

netty-scoket.io路径配置

1、服务端代码

package com.yh.service.socket;import com.corundumstudio.socketio.SocketIOServer;
import com.corundumstudio.socketio.store.RedissonStoreFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;import javax.annotation.PreDestroy;@Component
@Order(1)
public class SocketIOStart implements CommandLineRunner {private Logger logger = LoggerFactory.getLogger(SocketIOStart.class);private SocketIOServer server;private RedissonStoreFactory redissonStoreFactory;@Autowiredpublic SocketIOStart(SocketIOServer server, RedissonStoreFactory redissonStoreFactory) {this.server = server;this.redissonStoreFactory = redissonStoreFactory;}@Overridepublic void run(String... strings) throws Exception {logger.info("SocketIO Server starting...");server.start();}@PreDestroypublic void destory() {redissonStoreFactory.shutdown();server.stop();}}

package com.yh.service.socket;import com.corundumstudio.socketio.SocketIOServer;
import com.corundumstudio.socketio.annotation.SpringAnnotationScanner;
import com.corundumstudio.socketio.listener.DefaultExceptionListener;
import com.corundumstudio.socketio.store.RedissonStoreFactory;
import com.corundumstudio.socketio.store.pubsub.PubSubStore;
import org.redisson.api.RedissonClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class SocketImConfig {private PubSubStore pubSubStore;private SocketIOServer server;private static final int imPort = 28888;@Beanpublic RedissonStoreFactory redissonStoreFactory(RedissonClient redissonClient) {return new RedissonStoreFactory(redissonClient);}@Beanpublic SocketIOServer socketIOServer(RedissonStoreFactory redissonStoreFactory) {com.corundumstudio.socketio.Configuration config = new com.corundumstudio.socketio.Configuration();config.setPort(imPort);config.setStoreFactory(redissonStoreFactory);config.setExceptionListener(new DefaultExceptionListener());config.getSocketConfig().setReuseAddress(true);config.getSocketConfig().setSoLinger(0);config.getSocketConfig().setTcpNoDelay(true);config.getSocketConfig().setTcpKeepAlive(true);// 设置自定义路径  默认是 socket.ioconfig.setContext("/socket.io");//前端使用
//        io.connect(url,{ transports: ["websocket"],path:"/aaaa"});////解决跨域问题config.setOrigin(null);server = new SocketIOServer(config);pubSubStore = server.getConfiguration().getStoreFactory().pubSubStore();return server;}@Beanpublic PubSubStore pubSubStore() {return pubSubStore;}@Beanpublic SpringAnnotationScanner springAnnotationScanner(SocketIOServer socketServer) {return new SpringAnnotationScanner(socketServer);}}

2、没有nginx代理时客户端代码

      var url = 'http://172.16.50.21:28888';//path:"/socket.io"  对应服务端设置的   config.setContext("/socket.io");var socket =  io.connect(url,{ transports: ["websocket"],path:"/socket.io"});//var socket =  io.connect(url,{ transports: ["websocket"]});

3、展示 

4、nginx代理后,代理配置

location ^~/socket.io/ { proxy_pass http://172.16.50.21:28888;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;##此处Upgrade注意大小写proxy_set_header Connection "Upgrade";proxy_set_header Remote_addr $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_connect_timeout 15s;proxy_send_timeout 3600s;proxy_read_timeout 3600s;}

5、代理后前端

var url = 'http://172.16.50.21';//path:"/socket.io"  对应服务端设置的   config.setContext("/socket.io");var socket =  io.connect(url,{ transports: ["websocket"],path:"/socket.io"});//var socket =  io.connect(url,{ transports: ["websocket"]});

6、变更路径 ,服务段代码

package com.yh.service.socket;import com.corundumstudio.socketio.SocketIOServer;
import com.corundumstudio.socketio.store.RedissonStoreFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;import javax.annotation.PreDestroy;@Component
@Order(1)
public class SocketIOStart implements CommandLineRunner {private Logger logger = LoggerFactory.getLogger(SocketIOStart.class);private SocketIOServer server;private RedissonStoreFactory redissonStoreFactory;@Autowiredpublic SocketIOStart(SocketIOServer server, RedissonStoreFactory redissonStoreFactory) {this.server = server;this.redissonStoreFactory = redissonStoreFactory;}@Overridepublic void run(String... strings) throws Exception {logger.info("SocketIO Server starting...");server.start();}@PreDestroypublic void destory() {redissonStoreFactory.shutdown();server.stop();}}

package com.yh.service.socket;import com.corundumstudio.socketio.SocketIOServer;
import com.corundumstudio.socketio.annotation.SpringAnnotationScanner;
import com.corundumstudio.socketio.listener.DefaultExceptionListener;
import com.corundumstudio.socketio.store.RedissonStoreFactory;
import com.corundumstudio.socketio.store.pubsub.PubSubStore;
import org.redisson.api.RedissonClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class SocketImConfig {private PubSubStore pubSubStore;private SocketIOServer server;private static final int imPort = 28888;@Beanpublic RedissonStoreFactory redissonStoreFactory(RedissonClient redissonClient) {return new RedissonStoreFactory(redissonClient);}@Beanpublic SocketIOServer socketIOServer(RedissonStoreFactory redissonStoreFactory) {com.corundumstudio.socketio.Configuration config = new com.corundumstudio.socketio.Configuration();config.setPort(imPort);config.setStoreFactory(redissonStoreFactory);config.setExceptionListener(new DefaultExceptionListener());config.getSocketConfig().setReuseAddress(true);config.getSocketConfig().setSoLinger(0);config.getSocketConfig().setTcpNoDelay(true);config.getSocketConfig().setTcpKeepAlive(true);// 设置自定义路径  默认是 socket.ioconfig.setContext("/aaaa");//前端使用
//        io.connect(url,{ transports: ["websocket"],path:"/aaaa"});////解决跨域问题config.setOrigin(null);server = new SocketIOServer(config);pubSubStore = server.getConfiguration().getStoreFactory().pubSubStore();return server;}@Beanpublic PubSubStore pubSubStore() {return pubSubStore;}@Beanpublic SpringAnnotationScanner springAnnotationScanner(SocketIOServer socketServer) {return new SpringAnnotationScanner(socketServer);}}

7、没有nginx 代理,前端代码

var url = 'http://172.16.50.21:28888';var socket =  io.connect(url,{ transports: ["websocket"],path:"/aaaa"});

8、前端展示

9、设置路径  nginx代理  根据官方文档配置不可行

文档  https://socket.io/zh-CN/docs/v4/reverse-proxy/


文章转载自:

http://eo5mjEOz.zdymq.cn
http://L1Xcdnw8.zdymq.cn
http://CJy4UR58.zdymq.cn
http://uLUBRL60.zdymq.cn
http://eN6j3xq3.zdymq.cn
http://vCs1qEm0.zdymq.cn
http://x4R8NoZ6.zdymq.cn
http://KsxqC4Ia.zdymq.cn
http://J9FAuxJH.zdymq.cn
http://CMMdhiT2.zdymq.cn
http://tds085GX.zdymq.cn
http://FO2iHNDk.zdymq.cn
http://lMfgBKJH.zdymq.cn
http://ahBCmnDg.zdymq.cn
http://z6oUX4y5.zdymq.cn
http://1Wc2Axf8.zdymq.cn
http://1WCiYAeg.zdymq.cn
http://Bh4TuFhB.zdymq.cn
http://Uib6KhO0.zdymq.cn
http://v32ddGIv.zdymq.cn
http://LRhmSQCd.zdymq.cn
http://3xm3BbMN.zdymq.cn
http://NUrhGKFf.zdymq.cn
http://yUzBcyxt.zdymq.cn
http://Cokl6nqt.zdymq.cn
http://z6UFqATY.zdymq.cn
http://VWWBtOOK.zdymq.cn
http://wIxMi8GC.zdymq.cn
http://vFR5bfVl.zdymq.cn
http://gK9yoJZW.zdymq.cn
http://www.dtcms.com/a/374835.html

相关文章:

  • AI集群全链路监控:从GPU微架构指标到业务Metric关联
  • 推荐 Eclipse Temurin 的 OpenJDK
  • redis里多线程的应用具体在哪些场景
  • 阿里云-基于通义灵码实现高效 AI 编码 | 8 | 上手实操:LeetCode学习宝典,通义灵码赋能算法高效突破
  • 代码随想录算法训练营第50天 | 图论理论基础、深搜理论基础、98. 所有可达路径、广搜理论基础
  • Gradio全解11——Streaming:流式传输的视频应用(3)——YOLO系列模型技术架构与实战
  • WPF应用程序中的异常处理
  • openEuler2403安装部署Prometheus和Grafana
  • PyCharm 连接 AutoDL 远程服务器
  • 智能AI汽车电子行业,EMS应用相关问题
  • Linux随记(二十三 )
  • 【文献速递】基于minigene技术解析PTBP3介导IL-18可变剪接的分子机制
  • 排序---快速排序(Quick Sort)
  • 开源鸿蒙北向框架开发:系统服务理论详解
  • C/C++---动态内存管理(new delete)
  • Ubuntu系统安全合规配置
  • Chrome 核心事件循环揭秘:TaskSequenceManager 与 MessagePump 的设计与实现
  • Perforce QAC 2025.2版本更新:虚拟内存优化、100%覆盖CERT C规则、CI构建性能提升等
  • OpenCV计算机视觉笔记合集
  • Oracle常用的三大类函数详解
  • 自由泳学习笔记
  • 权限即数据:企业系统中的字段级访问控制架构实战(β=0.6)
  • 研学旅游产品设计实训室:赋能产品落地,培养实用人才
  • Android vs iOS 启动/内存/渲染 对照表
  • WAF如何应对金融领域的网络威胁和黑客攻击
  • YOLOv11改进大全:从卷积层到检测头,全方位提升目标检测性能
  • 机器学习04——决策树(信息增益、信息增益率、ID3、C4.5、CART、剪枝、连续值缺失值处理)
  • Javaweb - 14.6 - Vue3 数据交互 Axios
  • LeetCode 单调栈 739. 每日温度
  • Spark面试题及详细答案100道(71-80)-- 配置与部署