const net=require('net'); function processTcpPayload(data,sock){ console.log(data.toString('ascii')); } const startTCPServer = ()=>{ try{ net.createServer((sock)=>{ sock.on('data', (data)=>{ processTcpPayload(data, sock); }); sock.on('error', (err)=>{ }); sock.on('close', (data)=>{ }); }).listen(portHere, ipHere); }catch(err){ }process.on('SIGINT', ()=>{ process.exit(0); }); };He creado un servidor TCP usando Nodejs. Quería conectar mi aplicación de reacción a este servidor TCP y enviarle datos. Escribí el código React usando 'socket.io-client' y envié el evento al servidor. Pero todo lo que puedo ver en el servidor NodeJS son los siguientes datos
GET /socket.io/?EIO=4&transport=websocket HTTP/1.1 Host: HOSTIP:HOSTPORT Conexión: Actualizar Pragma: sin caché Control de caché: sin caché Agente de usuario: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit /537.36 (KHTML, como Gecko) Chrome/96.0.4664.110 Safari/537.36 Actualización: websocket Origen: http://ipWasHere:PORT_WAS_HERE Sec-WebSocket-Version: 13 Accept-Encoding: gzip, deflate Accept-Language: en-US, en;q=0.9 Cookie: languageId=eng Sec-WebSocket-Key: WEBSOCKET_KEY_WAS_HERE Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
El código de mi ReactJs es el siguiente:
import { io } from "socket.io-client"; const socket = io.connect("http://TCPSERVERIP:TCPSERVERPORT", { transports: ["websocket"], }); useEffect(() => { socket.on("message", (data) => { alert(JSON.stringify(data)); }); socket.emit("data", { message: "DATA IS HERE" }); // socket.emit("message", { message: "DATA IS HERE" }); }, []);Entiendo que los sockets web están en capas sobre HTTP, por lo que este es un comportamiento algo esperado. Pero no puedo encontrar la solución a este dilema. ¿No puedo comunicarme directamente usando TCP en React y NodeJS? ¿O necesito cambiar a un servidor websocket en mi servicio NodeJs?