解決socketjs連接不上ios問題

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;

    @Autowired
    private JwtUtils jwtUtils;
    @Autowired
    private RedisUtils redisUtils;
    @Value("${server.port}")
    private Integer port;
    @Autowired
    private MessageSend messageSend;

    /**
     * 設置stomp協議的入口(EndPoint)
     * 用於設置建立websocket連接
     * @param registry
     */
    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        logger.info("用於設置連接websocket的入口地址,");
        //設置連接websocket的開始前綴。前臺使用什麼來建立websocket通信。ws://localhost:端口/ws-start
        registry.addEndpoint("/ws-start")
                .setAllowedOrigins("*")//表示允許跨域請求,即允許所有的來源請求
                .withSockJS();//使用SockJS進行通信(當瀏覽器不支持websocket,使用SockJS進行通信)
    }

前端js如下

/**
     * 建立連接
     */
        cc.error(">>>>>>>:" + "建立連接");
        // @ts-ignore
        const 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下無法連接的問題

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章