Send state updates through socket, finish app
This commit is contained in:
parent
58de4bb47d
commit
13079ef54a
24
server.js
24
server.js
|
@ -1,10 +1,21 @@
|
|||
const express = require('express')
|
||||
const app = express()
|
||||
|
||||
var ioState = {
|
||||
dout: [false],
|
||||
}
|
||||
|
||||
const updateState = data => {
|
||||
ioState[data.type] = ioState[data.type].map((x, i) =>
|
||||
i == data.pin ? data.value : x
|
||||
);
|
||||
console.log(ioState);
|
||||
}
|
||||
|
||||
app.use('/', express.static('dist'))
|
||||
|
||||
app.get('/hello', function (req, res) {
|
||||
res.send('Hello World!')
|
||||
app.get('/api/dout/:pin', function (req, res) {
|
||||
res.send(ioState.dout[req.params.pin])
|
||||
})
|
||||
|
||||
const server = app.listen(3000, function () {
|
||||
|
@ -13,6 +24,11 @@ const server = app.listen(3000, function () {
|
|||
|
||||
const io = require('socket.io').listen(server);
|
||||
|
||||
io.on('connection', (socket) => {
|
||||
socket.emit('message', 'hello socket');
|
||||
io.on('connection', socket => {
|
||||
socket.emit('ioState', ioState);
|
||||
socket.on('update', data => {
|
||||
console.log(data);
|
||||
updateState(data);
|
||||
io.sockets.emit('ioState', ioState);
|
||||
});
|
||||
});
|
||||
|
|
23
src/app.js
23
src/app.js
|
@ -6,9 +6,7 @@ export default class App extends React.Component {
|
|||
super(props);
|
||||
|
||||
this.state = {
|
||||
ioState: {
|
||||
dout: [false],
|
||||
},
|
||||
ioState: null,
|
||||
socket: io.connect()
|
||||
}
|
||||
}
|
||||
|
@ -28,8 +26,9 @@ export default class App extends React.Component {
|
|||
console.log('connected');
|
||||
});
|
||||
|
||||
socket.on('message', (data) => {
|
||||
socket.on('ioState', (data) => {
|
||||
console.log(data);
|
||||
this.setState({ioState: data});
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -42,6 +41,14 @@ export default class App extends React.Component {
|
|||
});
|
||||
}
|
||||
|
||||
sendUpdate(type, pin, value) {
|
||||
this.state.socket.emit('update', {
|
||||
type: type,
|
||||
pin: pin,
|
||||
value: value,
|
||||
});
|
||||
}
|
||||
|
||||
render() {
|
||||
return (
|
||||
<div className="ui text container">
|
||||
|
@ -54,7 +61,7 @@ export default class App extends React.Component {
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="column">
|
||||
{this.state.ioState && <div className="column">
|
||||
<div className="ui segment">
|
||||
<div className="ui top attached label">Digital Out</div>
|
||||
<div className="ui two column middle aligned grid">
|
||||
|
@ -63,8 +70,8 @@ export default class App extends React.Component {
|
|||
DO1
|
||||
</div>
|
||||
<div className="ui buttons">
|
||||
<button onClick={() => this.doutSet(0, true)} className="ui red button">On</button>
|
||||
<button onClick={() => this.doutSet(0, false)} className="ui button">Off</button>
|
||||
<button onClick={() => this.sendUpdate('dout', 0, true)} className="ui red button">On</button>
|
||||
<button onClick={() => this.sendUpdate('dout', 0, false)} className="ui button">Off</button>
|
||||
</div>
|
||||
</div>
|
||||
<div className="four wide right aligned column">
|
||||
|
@ -73,7 +80,7 @@ export default class App extends React.Component {
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
|
Loading…
Reference in New Issue
Block a user