如何反应js充当websocket客户端?

时间:2016-06-30 11:41:13

标签: reactjs websocket

我想创建一个基于Websocket的客户端 - 服务器应用程序。在那里,我创建了节点js websocket服务器,它等待客户端。现在我想创建react js websocket客户端。我使用react js作为websocket,因为我必须连续渲染哪些服务器作为简单的文本消息发送。

我很擅长将react js作为websocket客户端实现。它应该如何作为websocket客户端以及如何将请求发送到websocket服务器,如下所示:

'ws://localhost:1234'

我想了解更多关于websocket客户端的信息,还想解决这个问题吗?

3 个答案:

答案 0 :(得分:23)

因此,一个没有太多开销的非常基本的例子需要两件事:

  1. 引用websocket连接的组件

  2. 连接上的事件侦听器,用于更新组件的状态 消息到达时

  3. 演示:http://jsfiddle.net/69z2wepo/47360/
    演示(2018年):http://jsfiddle.net/n8Lgq1jz/

    const Echo = React.createClass({
      getInitialState(){
        return { messages : [] }
      },
      componentDidMount(){
        // this is an "echo" websocket service for testing pusposes
        this.connection = new WebSocket('wss://echo.websocket.org');
        // listen to onmessage event
        this.connection.onmessage = evt => { 
          // add the new message to state
            this.setState({
            messages : this.state.messages.concat([ evt.data ])
          })
        };
    
        // for testing: sending a message to the echo service every 2 seconds, 
        // the service sends it right back
        setInterval( _ =>{
            this.connection.send( Math.random() )
        }, 2000 )
      },
      render: function() {
        // render the messages from state:
        return <ul>{ this.state.messages.map( (msg, idx) => <li key={'msg-' + idx }>{ msg }</li> )}</ul>;
      }
    });
    

答案 1 :(得分:0)

只需从服务器端创建休息程序并在网页上创建连接。

var connection = new WebSocket('ws://localhost/echo', ['soap', 'xmpp']);

opening the connection 
connection.onopen = function () {
  connection.send('Ping'); // 
};


connection.onerror = function (error) {
  console.log('WebSocket Error ' + error);
};

//to receive the message from server
connection.onmessage = function (e) {
  console.log('Server: ' + e.data);
};

// Sending String  
connection.send('your message');

在服务器端,您将获得会话和消息,因此您可以与N个会话进行通信。

答案 2 :(得分:0)

在App.js的react Project文件夹中添加一个websocket连接并监听来自websocket服务器的消息。

__cxx11

}