Advertisement
GarnetStar

Socket.io sending messages - client

Apr 25th, 2019
391
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React, {Component} from 'react';
  2. import socketIOClient from 'socket.io-client';
  3.  
  4. class Personal extends Component {
  5.     constructor(props) {
  6.         super(props);
  7.         this.state = {
  8.             endpoint: 'http://127.0.0.1:3001',
  9.             messages: [],
  10.             ourMessage: ''
  11.         };
  12.  
  13.         this.socket = socketIOClient(this.state.endpoint);
  14.         this.onWrite = this.onWrite.bind(this);
  15.         this.sendMessage = this.sendMessage.bind(this);
  16.     }
  17.  
  18.     componentWillMount() {
  19.         this.socket.on('server_message', data => {
  20.             let messages = this.state.messages;
  21.             messages.push(data);
  22.             this.setState({messages: messages});
  23.         });
  24.     }
  25.  
  26.     componentWillUnmount() {
  27.         this.socket.disconnect();
  28.     }
  29.  
  30.     onWrite(e) {
  31.         this.setState({ourMessage: e.target.value});
  32.     }
  33.  
  34.     sendMessage(e) {
  35.         e.preventDefault;
  36.         this.socket.emit('client_message', this.state.ourMessage);
  37.         this.setState({ourMessage: ''})
  38.     }
  39.  
  40.     render() {
  41.         const style = {'marginTop': '50px'};
  42.         const messages = this.state.messages;
  43.         return (
  44.             <div style={style}>
  45.                 <div>
  46.                     <input type='text' onChange={this.onWrite} value={this.state.ourMessage}/>
  47.                     <input type='button' onClick={this.sendMessage} value='send'/>
  48.                 </div>
  49.                 Messages:
  50.                 {messages.map((value, index) => {
  51.                     return <div key={index}>{index}. {value}</div>;
  52.                 })}
  53.             </div>
  54.         );
  55.     }
  56. }
  57.  
  58. export default Personal;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement