-

   rss_rss_hh_new

 - e-mail

 

 -

 LiveInternet.ru:
: 17.03.2011
:
:
: 51

:


[] React Socket.io

, 18 2017 . 16:12 +
, React- , Socket.io, , . React React Native. , , , -, , Vue Angular.

image

, , , . . . , , , , .

. , , , . , , , . . , , , , React- .

. Node.js, , React, , , . , , . Socket.io.


, , , Node.js NPM. , NPM- create-react-app, , , :

npm --global i create-react-app

React- socket-timer, , :

create-react-app socket-timer

, socket-timer. , , , , npm start.

, .

Socket.io


, . , , , Socket.io:

npm i --save socket.io

server.js . , , :

const io = require('socket.io')();

io . . . , () , .

:

io.on('connection', (client) => {
 //      
});

, Socket.io , .

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, , .

Socket.io


React- , npm start. , , .

, , subscribeToTimer timer, .

, , api.js src. , subscribeToTimer timer, , , .

:

function subscribeToTimer(interval, cb) {
}
export { subscribeToTimer }

Node.js, , , , .

Socket.io. :

npm i --save socket.io-client

. ES6, Webpack Babel. , 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, , , .

, , React


, api.js , , , . , React , , , .

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}

); }

, , , .


. , , . , , React- , .

! - ?
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/333618/

:  

: [1] []
 

:
: 

: ( )

:

  URL