Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用nodejs的客户端通信_Node.js_Websocket_Client Server - Fatal编程技术网

Node.js 使用nodejs的客户端通信

Node.js 使用nodejs的客户端通信,node.js,websocket,client-server,Node.js,Websocket,Client Server,我想交流两个网页page1.html和page2.html。我认为page1与app1.js节点应用程序相关,page2.html与app2.js节点应用程序相关。其思想是使用WebSocket将数据从page1.html发送到app1.js,然后app1.js将数据发送到page2.html。我的第一个想法是,app1.js将数据发送到app2.js,然后将app2.js发送到page2.html。我知道如何使用web套接字将page1.html与app1.js进行通信(客户端-服务器),但如

我想交流两个网页page1.html和page2.html。我认为page1与app1.js节点应用程序相关,page2.html与app2.js节点应用程序相关。其思想是使用WebSocket将数据从page1.html发送到app1.js,然后app1.js将数据发送到page2.html。我的第一个想法是,app1.js将数据发送到app2.js,然后将app2.js发送到page2.html。我知道如何使用web套接字将page1.html与app1.js进行通信(客户端-服务器),但如何将数据从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? 我知道如何进行客户机-服务器通信,但我不知道服务器-服务器通信以及如何将两者混合使用 摘要:使用WebSocket的page1.html->app1.js-->app2.js-->page2.html 感谢您的回答

您有两个选择:

1) 创建HTTP路由,处理两台服务器之间的后端发布/获取数据(我假设这很简单,您知道如何在服务器之间配置路由和获取/发布日期)

2) 您也可以在服务器级别使用套接字。请看一下node的net文档

您的代码如下所示:

    //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');
        });

您也可以使用。

看起来您可以用一种简单的方式实现这一点,但您不知道,因为您说过要将数据从page1发送到app1,从app1发送到app2,从app2发送到page2。所以基本上如果我没弄错的话,你想把数据从第1页发送到第2页。您只能在app.js中创建一台服务器,并使用socket.io连接这两个页面以相互发送数据

假设您有
page1.html

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

socket.emit('GETDATAFROMPAGE1', data);
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

谢谢。。。要在代码中使用它:我需要在套接字中使用服务器。on?->on('GETDATAFROMPAGE1',函数(数据){…….var server=net.createServer(……您的代码……});您的代码用于在浏览器和服务器之间进行通信。因此,在您的代码中,您需要通过管道将数据传输到app1 app2套接字流。我想给您一点意见,但我没有15点的声誉,请不要担心。。总有一天你会成功的。而不是给我一个点-帮助别人,所以:)这似乎是一个更好的解决方案,谢谢。。。如果page1.html与page2.html不同,我将尝试如何仅使用app.js打开page1.html和page2.html?我认为每个网页都与js node应用程序相关?您首先需要了解node.js的工作原理。您可以使用单个服务器呈现任意数量的页面。查找路由和渲染。使用Node.js的模块。请参阅Node.js express和socket.io的任何教程