0

ほぼ完全に機能している Sockjs の次の再接続メソッドがあります。

(function() {
  // Initialize the socket & handlers
  var connectToServer = function() {
    var warbleSocket = new SockJS('http://url.com:5555/warble');

    warbleSocket.onopen = function() {
      clearInterval(connectRetry);
      $('.connect-status')
        .removeClass('disconnected')
        .addClass('connected')
        .text('Connected');
    };

    warbleSocket.onmessage = function(e) {
      $('#warble-msg').text(e.data);
    };

    warbleSocket.onclose = function() {
      clearInterval(connectRetry);
      connectRetry = setInterval(connectToServer, 1000);
      $('.connect-status')
        .removeClass('connected')
        .addClass('disconnected')
        .text('Disconnected');
    };

    // Connect the text field to the socket
    $('.msg-sender').off('input').on('input', function() {
      warbleSocket.send($('.msg-sender input').val()); 
    });

    function send(a) {
        warbleSocket.send(a);    
    }

    return {
        send: send
    };
  }();
  var connectRetry = setInterval(connectToServer, 1000);
})();

私が得ているエラーは、再接続しようとしたときです。エラーは次のとおりです。

SyntaxError: missing ] after element list

この行で:

connectRetry = setInterval(connectToServer, 1000);

ここで間違っていることはありますか?

4

2 に答える 2

1

あなたのconnectToServer変数は関数ではなく、関数であるプロパティを持つオブジェクトなsendので、言うのは意味がありませんsetInterval(connectToServer, 1000)。代わりにこれを試してください:

setInterval(connectToServer.send, 1000);
于 2013-10-05T14:55:13.933 に答える
0

物事を少し単純化してみませんか?

特定の関数内に接続を入れて、setInterval() から呼び出します。

このようなもの (私はこのコードをテストしていないので注意して使用してください):

(function() {
  // Initialize the socket & handlers
  var connectToServer = function() {
    var warbleSocket;

    function connect() { 
      warbleSocket = new SockJS('http://url.com:5555/warble');

      warbleSocket.onopen = function() {
        // ...
      };

      warbleSocket.onmessage = function(e) {
        // ... 
      };

      warbleSocket.onclose = function() {
        // ...
    }

    // Connect the text field to the socket
    $('.msg-sender').off('input').on('input', function() {
      warbleSocket.send($('.msg-sender input').val()); 
    });

    function send(a) {
        warbleSocket.send(a);    
    }

    return {
        send: send
    };
  }();

  // you probably will need to call the first connection
  connectToServer();

  // and than set connection retry
  var connectRetry = setInterval(connectToServer.connect, 1000);
})();

お役に立てば幸いです。

よろしく、

ヘレノ

于 2014-04-15T13:28:36.710 に答える