2016-04-29 5 views
-1

Мне было интересно, можно ли запускать одно и то же приложение на двух отдельных браузерах и получать обновления от одного к другому?Angularjs несколько экземпляров приложения

скажем, у меня есть приложение работает на хроме: http://127.0.0.1:8000/# и тот же открытый в Firefox или другой инкогнито хромом, когда какой-либо открытого обновления сеанса то, что я хочу, чтобы получить это обновление/предупреждение о другой сессии. Любое направление будет оценено.

Благодаря

+1

Вы должны смотреть на на стороне сервера, а не на стороне клиента. –

+0

так что без серверной стороны это будет невозможно? – karma

+1

Более конкретно, если вы хотите, чтобы обновления происходили мгновенно (т. Е. Без перезагрузки страницы), вам, вероятно, потребуется реализовать WebSockets на вашем сервере или что-то в этом направлении. См. Http://socket.io/ (ну, когда он возвращается - кажется, для меня сейчас не работает). –

ответ

0

Я создал 2 веб-сервер для этой цели:

один работает веб-сокет. прочее приложение.

WebSocket пример nodejs:

#!/usr/bin/env node 

var WebSocketServer = require("ws").Server; 
var http = require("http"); 
var express = require("express"); 
var port = process.env.PORT || 5000; 

var app = express(); 
    app.use(express.static(__dirname+ "/../")); 
    app.get('/test', function(req, res, next) { 
     console.log('receiving get request'); 
    }); 
    app.post('/test', function(req, res, next) { 
     console.log('receiving post request'); 
    }); 
    app.listen(80); 

    //console.log("app listening on %d ", 80); 

var server = http.createServer(app); 
    server.listen(port); 

console.log("http server listening on %d", port); 


var userId; 
var wss = new WebSocketServer({server: server}); 
    wss.on("connection", function (ws) { 

    console.info("websocket connection open"); 

    var timestamp = new Date().getTime(); 
    userId = timestamp; 

    ws.send(JSON.stringify({msgType:"onOpenConnection", msg:{connectionId:timestamp}})); 


    ws.on("message", function (data, flags) { 
     console.log("websocket received a message"); 
     var clientMsg = data; 
     wss.clients.forEach(function each(client) { 
      client.send(clientMsg); 
     });   
    }); 

    ws.on("close", function() { 
     console.log("websocket connection close"); 
    }); 
}); 
console.log("websocket server created"); 

angularjs часть:

.run(function ($rootScope) { 
     if ("WebSocket" in window) 
      { 
       console.log("WebSocket is supported by your Browser!"); 
       $rootScope.updated = false; 
       // Let us open a web socket 
       socket = new WebSocket("ws://localhost:5000", "echo-protocol"); 
       socket.addEventListener("open", function(event) { 
        console.log("Connected"); 
       }); 

       // Display messages received from the server 
       socket.addEventListener("message", function(event) { 
        console.log("Server Says: " + event.data); 

        if (!$rootScope.updated) 
        if (event.data == "updated list") { 
         //here can passdata or update data 
         alert("Please refresh the page, new data should be available!"); 
        } 
       }); 

       // Display any errors that occur 
       socket.addEventListener("error", function(event) { 
        console.log("Error: " + event); 
       }); 

       socket.addEventListener("close", function(event) { 
        console.log("Not Connected"); 
       }); 
      } 

      else 
      { 
       // The browser doesn't support WebSocket 
       alert("WebSocket NOT supported by your Browser!"); 
      } 
    }) 

затем запустить "узел websocket.js" и приложение "HTTP-сервер -o"

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