クライアント接続をリッスンするNode.jsを使用してTCPサーバーを作成しました。おそらくWebsocket(socket.io )を介して、Node.jsでTCPサーバーからHTTPサーバーにデータを再度送信する必要があります。
ただし、TCPサーバーがWebsocketを介してHTTPサーバーにデータをプッシュできるように接続を作成する方法がわかりません。
どうもありがとう。
クライアント接続をリッスンするNode.jsを使用してTCPサーバーを作成しました。おそらくWebsocket(socket.io )を介して、Node.jsでTCPサーバーからHTTPサーバーにデータを再度送信する必要があります。
ただし、TCPサーバーがWebsocketを介してHTTPサーバーにデータをプッシュできるように接続を作成する方法がわかりません。
どうもありがとう。
私はこの仕事を得るためにたくさんのことを試みていました。ほとんどの場合、これを機能させるためにsocket.ioに依存していましたが、TCPでは機能していませんでした。
ただし、net.Socketで十分です。
これがその実例です。
TCPサーバー
var net = require('net');
var HOST = 'localhost';
var PORT = 4040;
var server = net.createServer();
server.listen(PORT, HOST);
server.on('connection', function(sock) {
console.log('CONNECTED: ' + sock.remoteAddress +':'+ sock.remotePort);
sock.write("TCP sending message : 1");
console.log('Server listening on ' + server.address().address +':'+
server.address().port);
}).listen(PORT, HOST);
HTTPサーバー
var http = require('http').createServer(httpHandler),
fs = require("fs"),
wsock = require('socket.io').listen(http),
tcpsock = require('net');
var http_port = 8888;
var tcp_HOST = 'localhost';
var tcp_PORT = 4040;
/**
* http server
*/
function httpHandler (req, res) {
fs.readFile(__dirname + '/index.html',
function (err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);
});
}
http.listen(http_port);
console.info("HTTP server listening on " + http_port);
wsock.sockets.on('connection', function (socket) {
var tcpClient = new tcpsock.Socket();
tcpClient.setEncoding("ascii");
tcpClient.setKeepAlive(true);
tcpClient.connect(tcp_PORT, tcp_HOST, function() {
console.info('CONNECTED TO : ' + tcp_HOST + ':' + tcp_PORT);
tcpClient.on('data', function(data) {
console.log('DATA: ' + data);
socket.emit("httpServer", data);
});
tcpClient.on('end', function(data) {
console.log('END DATA : ' + data);
});
});
socket.on('tcp-manager', function(message) {
console.log('"tcp" : ' + message);
return;
});
socket.emit("httpServer", "Initial Data");
});
ブラウザクライアント
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost');
socket.on('httpServer', function (data) {
console.log(data);
document.write(data + "\r\n");
socket.emit('tcp', "For TCP");
});
</script>
このように、Node.jsのHTTPサーバーとTCPサーバーの間にソケットが開かれます。
WebSocketよりもサーバー間で通信する必要がある場合は、おそらく最良の選択ではありません。RPCライブラリの1つを試すか、HTTPまたは独自のプロトコルを使用してください。
Node.jsのsocket.ioまたはws(WebSocketのみ)をクライアントとして使用できます(ブラウザーだけでなく)
var io = require('socket.io-client');
var socket = io.connect('http://IP address of Websocket server');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});