2016-04-22 7 views
1

私はNodejsを初めて使用していて、ソケットを使用してサーバークライアント接続を設定しようとしています。以下は私のコードです。サーバーは正常に動作していますが、クライアントは接続していません。 誰でも私が間違いを理解できるように助けてください。ノードjsのクライアントコード

多くのおかげであなたの代わりにsocket.io-clientパッケージを使用するクライアントの場合 ジェシー

Server.js

var express = require('express'); 
var app = express(); 
var server = require('http').createServer(app); 
var io = require('socket.io')(server); 

io.on('connection', function(socket){ 
    console.log('a user connected'); 
    socket.on('disconnect', function(){ 
    console.log('user disconnected'); 
    }); 
}); 

io.on('data', function(data) { 
    console.log('DATA from client is: ' + data); 
    // Close the client socket completely 

}); 
server.listen(4200); 
console.log('Monitoring server listening on port 4200'); 

Client.js

var HOST = '127.0.0.1'; 
var PORT = 4200; 
var express = require('express'); 
var app = express(); 
var client = require('http').createServer(app); 
var io = require('socket.io')(client); 

client.connect(PORT, HOST, function() 
{ 

    console.log('CONNECTED TO: ' + HOST + ':' + PORT); 
    // Write a message to the socket as soon as the client is connected, 
    // the server will receive it as message from the client 
    io.write('I am Chuck Norris!'); 

}); 

// Add a 'data' event handler for the client socket 
// data is what the server sent to this socket 
client.on('data', function(data) { 

    console.log('DATA: ' + data); 
    // Close the client socket completely 
    client.destroy(); 

}); 

// Add a 'close' event handler for the client socket 
client.on('close', function() { 
    console.log('Connection closed'); 
}); 

答えて

2

。クライアント側では、クライアント上にWebサーバーを再作成していないため、Express部分を使用する必要はありません。あなたの現在のコードを見れば、あなたがやりたいことではないソケットサーバーを本質的に再現しています。

新しいSocket.ioクライアントを作成し、さまざまなイベントハンドラを登録するだけです。

var socket = require('socket.io-client')('localhost:4200'); 
socket.on('data', function(data) { 
    // handle incoming data 
    console.log(data); 
}); 
+0

ありがとうございました。 –

+0

@JessiAnnGeorge問題ありません。これを本当に助けてくれたらこれを答えにしておくことを忘れないでください。将来この質問を見るときに答えが他人に分かります。 – peteb

+0

私が実装しなければならないのは、お互いに話す必要がある2台のサーバー(プロビジョニングおよび監視サーバー)です。どうやってこれを行うのか分かりませんので、私はサーバーとして、もう一方はクライアントとして、そのように話しました。クライアントがプロビジョニングサーバーからサービスを要求している場合、プロビジョニングサーバーは監視サーバーからデータを取得する必要があります。どのように2台のサーバを使ってこれを達成できますか?ありがとうございます –