मैं उसी पोर्ट पर tcp, http और websocket.io संचार सक्षम करने की कोशिश कर रहा हूं। मैंने टीसीपी सर्वर (ऊपर //// लाइन से ऊपर) के साथ शुरुआत की, यह काम किया। तब मैंने echo server example found on websocket.io (नीचे //// लाइन नीचे भाग) चलाया, यह भी काम किया। लेकिन जब मैं उन्हें एक साथ विलय करने की कोशिश करता हूं, तो टीसीपी अब और काम नहीं करता है।क्या एक ही बंदरगाह का उपयोग कर टीसीपी, http और websocket सभी को सक्षम करना संभव है?
SO, क्या यह एक ही बंदरगाह का उपयोग कर टीसीपी, http और websockets को सक्षम करना संभव है? या मुझे टीसीपी कनेक्शन के लिए एक और बंदरगाह पर सुनना है?
var net = require('net');
var http = require('http');
var wsio = require('websocket.io');
var conn = [];
var server = net.createServer(function(client) {//'connection' listener
var info = {
remote : client.remoteAddress + ':' + client.remotePort
};
var i = conn.push(info) - 1;
console.log('[conn] ' + conn[i].remote);
client.on('end', function() {
console.log('[disc] ' + conn[i].remote);
});
client.on('data', function(msg) {
console.log('[data] ' + conn[i].remote + ' ' + msg.toString());
});
client.write('hello\r\n');
});
server.listen(8080);
///////////////////////////////////////////////////////////
var hs = http.createServer(function(req, res) {
res.writeHead(200, {
'Content-Type' : 'text/html'
});
res.end(['<script>', "var ws = new WebSocket('ws://127.0.0.1:8080');", 'ws.onmessage = function (data) { ws.send(data); };', '</script>'].join(''));
});
hs.listen(server);
var ws = wsio.attach(hs);
var i = 0, last;
ws.on('connection', function(client) {
var id = ++i, last
console.log('Client %d connected', id);
function ping() {
client.send('ping!');
if (last)
console.log('Latency for client %d: %d ', id, Date.now() - last);
last = Date.now();
};
ping();
client.on('message', ping);
});
HTTP आम तौर पर टीसीपी के शीर्ष पर चलता है websockify बनाया है। HTTP और टीसीपी द्वारा आपका क्या मतलब है? –
यही कारण है कि मुझे संदेह है। मेरे सर्वर को मोबाइल ऐप्स के माध्यम से ब्राउज़र और टीसीपी कनेक्शन के माध्यम से websockets के साथ संवाद करने की आवश्यकता है। इस प्रकार मुझे दोनों प्रोटोकॉल की आवश्यकता है। –
शायद आप कच्चे टीसीपी के रूप में सुन सकते हैं और यदि आप HTTP का पता लगाते हैं, तो दूसरे हैंडलर को मैन्युअल रूप से अग्रेषित करें। इसी प्रकार, यदि आप HTTP सर्वर से WS का पता लगाते हैं (WS HTTP के रूप में प्रारंभ होता है), फिर से प्रतिनिधि दें। –