非常に基本的な方法で簡単なチャットチュートリアルのコードを変更して、ユーザーが何かを入力するとすぐにクライアントに応答を送信するJavaScriptチャットボットをNodeJSサーバーに配置しました。
これは、NodeJSサーバー上のコードの関連部分であり、次のように機能します。
socket.on('sendchat', function (data) {
// we tell the client to execute 'updatechat' with 2 parameters
io.sockets.emit('updatechat', socket.username, data);
// we also tell the client to send the bot's response
io.sockets.emit('updatechat', 'BOT', bot.transform(data));
});
したがって、ボットの応答はユーザーの入力と非常に密接に関係しています。ボットを別のノードサーバーに配置して、チャットがユーザーと同じようにボットを配信および反応できるようにし、ボットが独立して処理および動作できるようにします。だいたい:
USER(クライアント/ブラウザー)<--->
MEDIATOR(ノードサーバー1)<--->
CHAT BOT(ノードサーバー2)
..。
私は、自分にとって明らかなことであると思われることを試しました(これも明らかに間違っていました)。これは、クライアントから次の行を取得します。
var socket = io.connect('http://localhost:8080'); // 8080 being the port for the other server
私はこれを次のようにサーバー側のjsファイルにドロップしました:
var app = require('express').createServer();
var io = require('socket.io').listen(app);
app.listen(8080);
var socket = io.connect('http://localhost:8080');
ただし、これにより、ノードコンソールにエラーが発生し、io
オブジェクトにメソッドがないことが示されconnect
ます。おそらくこれはconnect
、クライアント側のJSスクリプトにのみ属しているためです。クライアント側のライブラリをハッキングせずに、ノードサーバーを別のノードサーバーと対話させる簡単な方法はありますか?
より基本的には、2つのノードサーバーを同時に実行し、1つをメディエーターにして、クライアントにプッシュする前に別のサーバーとの間でメッセージを送受信することも可能ですか?Expressフレームワーク(v2.4.6)とsocket.io(v0.8.4)を使用していますが、他の提案も受け付けています。