[] React Socket.io |
create-react-app
, , , :npm --global i create-react-app
socket-timer
, , :create-react-app socket-timer
socket-timer
. , , , , npm start
.npm i --save socket.io
server.js
. , , :const io = require('socket.io')();
io
. . . , () , .io.on('connection', (client) => {
//
});
const port = 8000;
io.listen(port);
console.log('listening on port ', port);
node server
. , : listening on port 8000
.server.js
:io.on('connection', (client) => {
client.on('subscribeToTimer', (interval) => {
console.log('client is subscribing to timer with interval ', interval);
});
});
io.on('connection', (client) => {
client.on('subscribeToTimer', (interval) => {
console.log('client is subscribing to timer with interval ', interval);
setInterval(() => {
client.emit('timer', new Date());
}, interval);
});
});
subscribeToTimer
, . , , . timer
.server.js
:const io = require('socket.io')();
io.on('connection', (client) => {
client.on('subscribeToTimer', (interval) => {
console.log('client is subscribing to timer with interval ', interval);
setInterval(() => {
client.emit('timer', new Date());
}, interval);
});
});
const port = 8000;
io.listen(port);
console.log('listening on port ', port);
node server
. , server.js
, , .npm start
. , , .subscribeToTimer
timer
, .api.js
src
. , subscribeToTimer
timer
, , , .function subscribeToTimer(interval, cb) {
}
export { subscribeToTimer }
npm i --save socket.io-client
socket.io-client
:import openSocket from 'socket.io-client';
const socket = openSocket('http://localhost:8000');
subscribeToTimer
, , , , timer
, .timer
, , subscribeToTimer
. , timer
, . api.js
:import openSocket from 'socket.io-client';
const socket = openSocket('http://localhost:8000');
function subscribeToTimer(cb) {
socket.on('timer', timestamp => cb(null, timestamp));
socket.emit('subscribeToTimer', 1000);
}
export { subscribeToTimer };
timer
, subscribeToTimer
. , , timer
, , , .api.js
, , , . , React , , , .create-react-app
App.js
( src
). API:import { subscribeToTimer } from './api';
subscribeToTimer
api.js
. , , timestamp
, , .constructor(props) {
super(props);
subscribeToTimer((err, timestamp) => this.setState({
timestamp
}));
}
timestamp
, . :state = {
timestamp: 'no timestamp yet'
};
render
, timestamp
:render() {
return (
This is the timer value: {this.state.timestamp}
);
}