我有一個用SSJS(Node)編寫的應用程序......這個應用程序需要向php腳本提供數據,這個腳本將會被fsockopen請求..這裏就...這個服務器需要通過一個第二服務器來收集數據持續連接。這個怎麼做?讓相同的過程協調這些連接?這可能嗎?如何使客戶端在同一節點進程中與服務器通話?
var net = require('net');
/* #############################################
# "CLIENT" Used to connect to data server
# ---------------------------------
#############################################
*/
var clientConnect = net.createConnection(port, host);
clientConnect.setEncoding('utf8');
clientConnect.on('connect', function() {
console.log('Client','Connected to CAGEAPI');
clientConnect.write('[email protected]');
});
clientConnectt.on('data', function (data) {
console.log('Client','Data received: ' + data);
});
clientConnect.on('close', function(code) {
console.log('Client','Connection closed');
});
clientConnect.on('error', function (err) {
console.log(err);
});
/* ################################################
#
# "SERVER" Used to serv data to PHPScripts
# --------------------------------
################################################
*/
var handleServer = net.createServer(function(server) {
console.log('Server','CONNECTED: ' + server.remoteAddress +':'+ server.remotePort);
server.on('data', function(data) {
console.log('Server','DATA ' + server.remoteAddress + ': ' + data);
// Write the data back to the socket, the client will receive it as data from the server
server.write('You said "' + data + '"');
});
// Add a 'close' event handler to this instance of socket
server.on('close', function(data) {
console.log('Server','CLOSED: ' + server.remoteAddress +' '+ server.remotePort);
});
}).listen(port2, host2);
這兩個(客戶端和服務器)工作正常......但如何讓他們互相交談?
您需要將客戶端創建代碼移動到服務器的'connection'事件處理函數(您傳遞給'net.createServer()'的函數),並使用'.pipe( )' - 如果你想充當代理,直接在對等節點之間進行全雙工通信,而無需其他節點參與,則需要在兩個方向上執行此操作。然而,想到這可能是一個不必要的複雜 - 你不能直接從PHP連接到遠程主機?或者我錯過了什麼/ – DaveRandom
發表評論...我無法直接連接,因爲數據服務器需要持久連接處理程序...他們不允許通過同一IP連接多個連接.. –
他們要求我製作Python或C++應用程序來處理這種情況...但我試圖用js來做它 –