使用nodejs进行客户端 - 客户端通信

时间:2014-01-29 09:23:19

标签: node.js websocket client-server

我想传达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套接字与page1.js通信(客户端 - 服务器)page1.html,但如何将数据从app1.js发送到app2.js?在app1.js我有

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? 我知道如何进行客户端服务器通信,但我不知道服务器 - 服务器通信以及如何混合它们 摘要:page1.html - > app1.js - > app2.js - > page2.html使用websockets 谢谢你的回答

2 个答案:

答案 0 :(得分:0)

您有两种选择:

1)创建HTTP路由,处理两个服务器之间的发送/获取数据(我认为它是微不足道的,你知道如何配置路由和服务器之间的获取/发布日期)

2)您也可以在服务器级别使用套接字。看一下node的网络文档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

答案 1 :(得分: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