2014-01-29 84 views
0

我想溝通2個網頁page1.html和page2.html。我認爲page1與app1.js節點應用程序相關,page2.html與app2.js節點應用程序相關。這個想法是使用websockets將page1.html中的數據發送到app1.js,然後app1.js將數據發送到page2.html。我的第一個想法是app1.js將數據發送到app2.js,然後將app2.js發送到page2.html。我知道如何使用Web套接字與app1.js通信(客戶端 - 服務器)page1.html,但如何將數據從app1.js發送到app2.js?在app1.js我有使用nodejs的客戶端 - 客戶端通信

io = require('socket.io').listen(3000); //and 

io.sockets.on('connection', function (socket) { 
    socket.on('GETDATAFROMPAGE1', function (data){ 
     .....I Get data to be sent to app2? 
    }); 
} 

我需要爲其他端口創建一個新的io2嗎?我怎麼能發送數據到app2.html? 我知道如何做一個客戶端服務器通信,但我不知道服務器 - 服務器通信,以及如何混合使用websockets的 摘要:page1.html - > app1.js - > app2.js - > page2.html 感謝您的回答

回答

0

好像你可以用簡單的方法實現它,但是你不知道,因爲你說你想從page1發送數據到app1,從app1發送數據到app2,從app2發送到page2。所以基本上,如果我讓你正確的話,你想發送數據從page1到page2。您可以在app.js中只創建一個服務器,並使用socket.io連接兩個頁面以將數據發送給對方。

比方說,你有page1.html

socket.emit('GETDATAFROMPAGE1', data); 

page2.html

socket.on('dataFromPage1', function(data){ 
    //do something 
}); 

,你有app.js

io.sockets.on('connection', function (socket) { 
socket.on('GETDATAFROMPAGE1', function (data){ 
    socket.broadcast.emit('dataFromPage1', data) 
    }); 
} 

廣播事件只發射到其他日數據的發送者。現在你可以發送數據從page1.html到服務器和服務器到page2.html

+0

這似乎是一個更好的解決方案,謝謝...我要去嘗試 – user2986808

+0

如果page1.html不同於page2.html如何打開page1.html和page2.html只使用app.js?我認爲每個網頁都與js節點應用程序相關? – user2986808

+0

您首先需要了解node.js的工作原理。您可以使用單臺服務器渲染儘可能多的頁面。尋找路由和渲染。使用[expressjs](http://expressjs.com),它是Node.js的一個模塊。查看Node.js express和socket.io的任何教程 –

0

你有兩個選擇:其中處理髮布

1)建立HTTP路由/獲取數據傳回兩個服務器之間來回結束(我認爲這是小事,你知道如何配置路由和獲取/發佈服務器之間的日期)

2)您也可以在服務器級別使用套接字。看看節點的網絡文檔http://nodejs.org/api/net.html

您的代碼會是這個樣子:

//server 
     var net = require('net'); 
     var server = net.createServer(function(c) { //'connection' listener 
      console.log('server connected'); 
      c.on('end', function() { 
      console.log('server disconnected'); 
      }); 
      c.write('hello\r\n'); 
      c.pipe(c); 
     }); 
     server.listen(8124, function() { //'listening' listener 
      console.log('server bound'); 
     }); 

    //client 
     var net = require('net'); 
     var client = net.connect({port: 8124}, 
      function() { //'connect' listener 
      console.log('client connected'); 
      client.write('world!\r\n'); 
     }); 
     client.on('data', function(data) { 
      console.log(data.toString()); 
      client.end(); 
     }); 
     client.on('end', function() { 
      console.log('client disconnected'); 
     }); 

您還可以使用json-socket

+0

謝謝...要在我的代碼中使用它:我需要使用socket.on內的服務器? - > socket.on('GETDATAFROMPAGE1',function(data){........... var server = net.createServer(...... your code ...)}); – user2986808

+0

您的代碼用於在瀏覽器和服務器之間進行通信。因此,在您的代碼中,您需要將數據傳輸到app2套接字流的app1 <->。 –

+1

我想給你一點,但我沒有名譽15 – user2986808