Skip to content

Commit b71ead2

Browse files
committed
realtime socket.io
1 parent 851cf9c commit b71ead2

File tree

4 files changed

+64
-19
lines changed

4 files changed

+64
-19
lines changed

package.json.save

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
2+
{
3+
"name": "react-chatv2",
4+
"version": "1.0.0",
5+
"description": "",
6+
"main": "index.js",
7+
"scripts": {
8+
"stylus": "stylus -u nib -c -o public src/client/stylus/style.styl",
9+
"build": "browserify -t babelify src/client/app.js > public/bundle.js",
10+
"server": "babel-node src/server/index.js",
11+
"start": "npm run stylus && npm run build && npm run server"
12+
},
13+
"author": "@Manuel_Galindez",
14+
"license": "MIT",
15+
"devDependencies": {
16+
"babel-cli": "^6.16.0",
17+
"babel-preset-es2015": "^6.16.0",
18+
"babel-preset-react": "^6.16.0",
19+
"babelify": "^7.3.0",
20+
"browserify": "^13.1.0",
21+
"express": "^4.14.0",
22+
"nib": "^1.1.2",
23+
"react-engine": "^4.1.0",
24+
"stylus": "^0.54.5"
25+
},
26+
"dependencies": {
27+
"react": "^15.3.2",
28+
"react-addons-css-transition-group": "^15.3.2",
29+
"react-dom": "^15.3.2",
30+
"socket.io": "^1.5.0",
31+
"socket.io-client": "^1.5.0"
32+
}
33+
}

src/client/Components/Discussions.js

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import React from 'react';
22
import io from 'socket.io-client';
3+
import uid from 'uid';
34
import MessageList from './MessageList';
45

56

@@ -10,32 +11,42 @@ export default class Discussions extends React.Component {
1011
this.state = { messages: [] };
1112
this._dataValue = this._dataValue.bind(this);
1213
this._MessageSend = this._MessageSend.bind(this);
14+
this.user = uid(10);
1315
}
1416

1517
componentDidMount(){
1618
this.socket = io('localhost:3000');
19+
20+
this.socket.on('message', (message) => {
21+
if (message.user !== this.user) {
22+
this._MessageSend(message);
23+
}
24+
})
1725
}
1826

19-
_dataValue(text) {
20-
let textValue = text.target.value;
27+
_dataValue(ev) {
28+
29+
ev.preventDefault();
30+
31+
let textValue = document.getElementById('textarea').value;
2132
const avatar = this.props.avatar;
2233
const username = this.props.username;
2334

24-
let message = { avatar: avatar, username: username, message: textValue };
25-
this.state.messages.push( message );
35+
if ( textValue !== '' ) {
36+
37+
let message = { avatar: avatar, username: username, message: textValue };
38+
this._MessageSend(message);
39+
this.socket.emit('new-message', message);
40+
document.getElementById('textarea').value = '';
41+
}
42+
2643
}
2744

28-
_MessageSend(ev) {
29-
ev.preventDefault();
30-
let MessageGlobal = this.state.messages;
45+
_MessageSend(message) {
3146

32-
for ( let cont = 0; cont <= MessageGlobal.length -1; cont++) {
33-
if ( cont === MessageGlobal.length -1 ) {
34-
let dataMessage = [ MessageGlobal[cont] ];
35-
this.setState({ messages: dataMessage })
36-
}
37-
}
38-
document.getElementById('textarea').value = '';
47+
this.state.messages.push( message );
48+
let MessageGlobal = this.state.messages;
49+
this.setState({ messages: MessageGlobal });
3950
}
4051

4152
render(){
@@ -56,8 +67,8 @@ export default class Discussions extends React.Component {
5667

5768

5869
<form className="Message-form" method="POST">
59-
<textarea id="textarea" placeholder="Write message..." onChange={this._dataValue}></textarea>
60-
<button type="submit" onClick={ this._MessageSend }>Click</button>
70+
<textarea id="textarea" placeholder="Write message..."></textarea>
71+
<button type="submit" onClick={ this._dataValue }>Send</button>
6172
</form>
6273

6374
</div>

src/client/stylus/style.styl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ figure
8686

8787

8888
.Message-form
89+
display flex
8990
> textarea
9091
box-sizing border-box
9192
width 100%

src/server/index.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@ let server = http.createServer(app).listen(port, () => console.log(`Server liste
3030
const io = sckengine.listen(server);
3131

3232
io.on('connection', (socket) => {
33-
console.log('New user connect');
33+
console.log(`New user connect ${socket.id}`);
3434

35-
socket.on('new messages', (msj) => {
36-
io.emit('message', msj);
35+
socket.on('new-message', (msg) => {
36+
io.emit('message', msg);
3737
})
3838

3939
})

0 commit comments

Comments
 (0)