javascript - Socket not working between react and node.js
问题描述
I am working on a React and node socket.io project where I am simply sending data from file through sockets and recieving it in react.I am able to recieve the data in the server but not in react. Whenever I put some changes in my test.txt file,the server shows the changes in console but the react app is not able to show that. Need some help.Here's the code:
socketClient.js
const fs=require('fs')
var io = require('socket.io-client');
var socket = io.connect('http://localhost:3000', {reconnect: true});
var prev=""
// Add a connect listener
function getDifference(a, b)
{
var i = 0;
var j = 0;
var result = "";
while (j < b.length)
{
if (a[i] != b[j] || i == a.length)
result += b[j];
else
i++;
j++;
}
return result;
}
socket.on('connect', function (socket) {
console.log('Connected!');
});
fs.watchFile("test.txt",function(current, previous) {
console.log("File changed!");
file = fs.readFileSync("test.txt");
console.log("file"+String(file));
console.log("prev"+String(prev));
var output=getDifference(String(prev),String(file));
prev=file
socket.emit("log","me",String(output))
});
socketServer.js
const app=require('express')();
const server=require('http').createServer(app)
var io= require("socket.io")(server,{ cors: { origin: "192.168.0.6:3001", credentials: true } });
io.sockets.on('connection', function (socket) {
// socket.broadcast.emit('logging', {message: "hey"});
socket.on('log', function (from, msg) {
console.log('MSG', from, ' saying ', msg);
});// we emit an event
});
server.listen(3000,function(){
console.log("Listening on 3000");
});
Here's my react app:
import React, { useState, useEffect } from "react";
import socketIOClient from "socket.io-client";
const ENDPOINT = "http://192.168.0.6:3000"; //my socket url
function App() {
const [response, setResponse] = useState("");
useEffect(() => {
const socket = socketIOClient(ENDPOINT);
socket.on("log",{ transports: ['websocket', 'polling', 'flashsocket'] }, data => {
setResponse(data);
});
}, []);
return (
<p>
It's <time dateTime={response}>{response}</time>
</p>
);
}
export default App;
How to make this work? thanks for help
解决方案
推荐阅读
- python - 名称“get_total_discount_item_price”未定义
- c++ - 为什么绑定 2 openGL sampler1d 纹理不起作用?
- node.js - 在 Nodejs 中阅读 cli 需要解释
- python - 试图在 html 代码中找到特定的东西
- c - 为什么两个 dirrerent 函数中的两个不同变量在 C 中共享相同的内存位置?
- android - 尝试优化重组的问题
- python - 如何存储在kivy中列出?
- javascript - JS 吸气剂性能
- java - 将 Java 对象返回给适当的 Kafka 生产者
- java - 带有Java的String的排序数组的问题