1

サーバーに接続するアプリケーションを作成していsailsます。

このアプリケーションはcordova、 、angularJSおよびで作成されていIonicます。

ブラウザで ( を使用してionic serve) アプリケーションを起動すると、ソケットがサーバーに接続できません。これが私が得るメッセージです:

GET http://localhost:8100/socket.io/?__sails_io_sdk_version=0.11.0&__sails_io_s…sails_io_sdk_language=javascript&EIO=3&transport=polling&t=1443472067762-4 404 (Not Found)

サーバーはポート 1337 でローカルに実行されています。上記の URL を次のように変更しようとしました。

http://localhost:1337/socket.io/?__sails_io_sdk_version=0.11.0&__sails_io_s…sails_io_sdk_language=javascript&EIO=3&transport=polling&t=1443472067762-4

そしてそれは働いています。

私のコードでは、sails.io.js含まれた後に URL を設定します。

io.sails.url = 'http://localhost:1337';
io.sails.useCORSRouteToGetCookie = false;

を求めているのにそうlocalhost:8100ではないのはなぜlocalhost:1337ですか?

モバイル デバイスでこのアプリケーションを起動すると (URL を に設定http://192.168.1.10:1337)、正しく動作しています。

のバージョンはsails.io.jsであり0.11.6、 のバージョンはsailsです0.11.0

4

2 に答える 2

1

localhost:8100モバイル開発環境では機能しません。同じ問題に直面し、localhost をワークステーションの IP に変更すると問題が解決しました

于 2015-09-30T01:14:23.927 に答える
1

私はついに解決策を見つけました(しかし、どこで見つけたのか思い出せなくて申し訳ありません:()

問題はio.sails.url = 'http://localhost:1337';、最初の JS サイクルの後に が実行されたため、sails ソケットが既にロードされていたことです。(それは(私が理解したことから)一部のブラウザでは、コードが別のscriptタグにある場合、別のサイクルで実行されるためです)

機能させるには、sails ソケット スクリプトを含める前に、次のコードを追加する必要がありました。

var apiHost = 'localhost';
            (function (){
                var io;
                Object.defineProperty(window, 'io', {
                    get: function (){
                        return io;
                    },
                    set: function (value){
                        var sails;
                        io = value;
                        Object.defineProperty(io, 'sails', {
                            get: function (){
                                return sails;
                            },
                            set: function (value){
                                sails = value;
                                sails.url = 'http://'+apiHost+':1337';
                                sails.useCORSRouteToGetCookie = false;
                            }
                        });
                    }
                });
            })();
于 2015-10-04T16:32:38.543 に答える