作者:苗Tinal3 | 来源:互联网 | 2023-09-24 10:41
cocos游戏打包Android端和网页端socketjs连接正常ios端socketjs不能连接问题后台spring服务器代码如下ConfigurationEnableWeb
cocos 游戏打包Android 端和网页端socketjs连接正常 ios 端socketjs不能连接问题
后台spring服务器代码如下
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {private static Logger logger= LoggerFactory.getLogger(WebSocketConfig.class);/*** 设置心跳的时间间隔*/private final long HEART_BEAT=5000;@Autowiredprivate JwtUtils jwtUtils;@Autowiredprivate RedisUtils redisUtils;@Value("${server.port}")private Integer port;@Autowiredprivate MessageSend messageSend;/*** 设置stomp协议的入口(EndPoint)* 用于设置建立websocket连接* @param registry*/@Overridepublic void registerStompEndpoints(StompEndpointRegistry registry) {logger.info("用于设置连接websocket的入口地址,");//设置连接websocket的开始前缀。前台使用什么来建立websocket通信。ws://localhost:端口/ws-startregistry.addEndpoint("/ws-start").setAllowedOrigins("*")//表示允许跨域请求,即允许所有的来源请求.withSockJS();//使用SockJS进行通信(当浏览器不支持websocket,使用SockJS进行通信)}
前端js如下
/*** 建立连接*/cc.error(">>>>>>>:" + "建立连接");// @ts-ignoreconst socket = new SockJS(`http://landlordapi.tiangu95.com/tiangugame/landlord/ws-start`, undefined, {transports: ['websocket']});this._stompCli = Stomp.over(socket);this._stompCli.heartbeat.outgoing = 2000;this._stompCli.heartbeat.incoming = 2000;let _that = this;this._stompCli.connect({token: cc.sys.localStorage.getItem(DBK.ACCESS_TOKEN)},(frame) => {this.subscribeTopic();if (cc.director.getScene().name != ENUM_DDZ_SCENE.GAME) {setTimeout(() => {cc.director.loadScene(ENUM_DDZ_SCENE.GAME, () => {this.sendEnterGame();});}, 1000);}cc.find("root/disTip").active = false;cc.error(">>>>>>>:" + "连接成功")},(error) => {cc.find("root/disTip").active = true;// this.doConnect();});// this._stompCli.debug = (str) => {// cc.log(">>>>>>::" + str);// }
解决办法找到SocketJs库查找到 this.xhr.withCredentials = true; 注释掉,解决
// this.xhr.withCredentials = true; //修复ios下无法连接的问题