2014-02-02 4 views
1

Я использую angularjs для создания одностраничного приложения - я выделяю один разъем сообщения для соединений, открытых для гостей и пользователей, а также для других пользователей.Перезапуск socket.io на стороне клиента

Следовательно, мне нужен сокет, чтобы узнать, следует ли инициализировать соединение для пользователя или гостя. Поскольку я использую угловую, я не обновляю страницу, когда пользователь входит в систему, а затем до обновления страницы пользователь не получает свои личные уведомления о сокетах io. (Слишком много информации? Извините!)

Простой вопрос - Как воспроизвести то, что происходит с сокетом io, на странице обновления (перезапустить его) программно, желательно с клиентской стороны.

Пробовал это

restart: function(){ 
    socket.disconnect(); 
    window.socket = io.connect(); 
} 

и он не работает (появляется только для вызова на функцию отключения, на самом деле не перезапустить соединение), не могу найти любое другое решение!

ответ

0

Я использовал WebSocket:

Вот фрагменты кода, которые работали для меня:

function startSocket() 
     { 

      if ("WebSocket" in window) 
      { 
       ws = new WebSocket("%%WEBSOCKET_URL%%"); 



       // Called when the websocket is opened 
       ws.onopen = function() 
       { 
        /* .... */ 
       }; 

       // Called when the websocket receives data 
       ws.onmessage = function(evt) 
       { 
        /* .... */ 
        //dataTableDefault.push(evt.data);       
       }; 

       // Called when the websocket is closed 
       ws.onclose = function() { 

       }; 
      } 
      else 
      { 
       alert("Browser doesn't support WebSockets!"); 
      } 
     } 

function stopSocket() 
     { 

      try { 
       ws.onopen = null; 
       ws.onmessage = null; 
       ws.onclose = null; 
       ws.onerror = null; 

       ws.close(); 

      } catch (e) { 
       console.log('try/catch around location update'+e); 
      } 

     } 

Надеются, что это поможет,

Смежные вопросы