2017-04-27 34 views
2

我是新的節點。我試圖讓應用程序在用戶可以點擊按鈕,並且有些東西將通過TCP發送到客戶端。
這裏是我的ECHO服務器(例如,從nodejs.org)
Node.js點擊按鈕並用TCP/IP協議發送東西

const net = require('net'); 

var HOST = '0.0.0.0' 
var PORT = 6969; 

var server = net.createServer(); 
server.listen(PORT, HOST); 
console.log('Server listening on ' + server.remoteAddress + ':' + server.remotePort); 

server.on('connection', function(socket) { 
    console.log('CONNECTED: ' + socket.remoteAddress + ':' + socket.remotePort); 
    socket.write('Hello from server'); 
    // other stuff is the same from here 
    socket.on('data', function(data) { 
    socket.write('reply data ' + data); 
    }); 
}); 

你能解釋我如何獲得在另一個js文件此連接。我正在嘗試製作module.exports = server,但我無法理解如何從其他文件發送信息。救救我,請

+0

,您需要在服務之間建立一個通用的通信點,這與微服務架構類似(現在一切似乎都是微服務)。您可以通過回調參數傳遞套接字對象。從我的角度來看,最好的方式是在一個服務中跟蹤一個對象ID =>套接字,並且只在第二個服務需要發送某些內容時將該ID傳遞給另一個服務,只需將該ID傳回主tcp服務器即可廣播該消息。 – Gntem

回答

4

你可以嘗試這樣的事:

app.js

var HOST = '0.0.0.0' 
var PORT = 6969; 

var server = net.createServer(); 
server.listen(PORT, HOST); 
console.log('Server listening on ' + server.remoteAddress + ':' + 
server.remotePort); 

const socket = require("./controllers/socket")(server); 
app.get("/socket/connection", socket.connection); 

socket.js

如果你想在其他業務共用插座對象
const net = require('net'); 

module.exports = function(server) { 

    module.connection = function(request, response) { 

    server.on('connection', function(socket) { 
     console.log('CONNECTED: ' + socket.remoteAddress + ':' + 
     socket.remotePort); 
     socket.write('Hello from server'); 
     // other stuff is the same from here 
     socket.on('data', function(data) { 
      socket.write('reply data ' + data); 
     }); 
    }); 


    return module; 
}; 
+0

所以在文件「main.js」我可以使用'server.socket.write()'或它將如何工作? – Polly

+0

這是怎麼得到這個連接在另一個js文件? – Gntem

+0

@ Mr.Phoenix在文件「main.js」中,例如,我有很多按鈕的功能。在「server.js」中,我創建了tcp服務器,並將此文件用於主文件。當應用程序啓動 - >客戶端連接到我的服務器,當我點擊按鈕 - >我應該發送一些東西到客戶端 – Polly