クライアント:
var iosocket = io.connect();
iosocket.on('connect', function () {
iosocket.on('message', function(message) {
console.log(message)
});
});
$('#input').keypress(function(event) {
if(event.which == 13) {
event.preventDefault();
iosocket.send($('#input').val());
}
});
サーバー:(一部が必要です)
var socket = require('socket.io');
conn = function (socket) {
console.log("connnect");
socket.on('disconnect', function (socket) {
console.log("disconnect");
});
socket.on('message', function (data) {
var socket1 = new net.Socket();
socket1.connect (PORT, HOST, function() {
socket1.write(data);
socket1.end();
});
socket1.on('data', function(data) {
socket.broadcast.emit('message', data);
socket.emit('message',data);
});
socket1.on('error', function(exception){
console.log('Exception:');
console.log(exception);
});
socket1.on('drain', function() {
console.log("socket1 drain!");
});
socket1.on('timeout', function() {
console.log("socket1 timeout!");
});
socket1.on('close', function() {
console.log('Socket1 closed');
});
});
}
var io = socket.listen(server, { log: false });
io.sockets.on('connection', conn );
問題1(解決しましたがフィードバックが必要です):クライアントで取得した応答(mkessage変数)は16進配列形式でした。setencodingとtostringメソッドを試しましたが、問題は解決しませんでした。次のコードは、16進配列を読み取り可能な文字列に変換しました。
byte = '';
for (var i=0; i < data.length; i++) {
byte += String.fromCharCode( parseInt(data[i], 16).toString(16) );
}
問題2:tcpソケットsocket1が毎回作成され、これを行うのに非常に時間がかかります。書き込みのたびに閉じられないようにsocket1を作成して使用するにはどうすればよいですか?
PORT HOSTで聞いている他の人のステータスは、それを強制的に閉じますか?