当前位置:   article > 正文

React中使用react-websocket_react 使用webscoket

react 使用webscoket

react-websocket

安装

npm install --save react-websocket

用法
 

import Websocket from 'react-websocket';

这里引入的是根目录下index.jsx,如果需要引入js文件可以使用

import Websocket from 'react-websocket/build/index';

  1. render() {
  2. return (
  3. ……
  4. <Websocket
  5. url={'ws://127.0.0.1:9995'}
  6. onMessage={this.onMessage.bind(this)}
  7. ref={Websocket => this.refWebSocket = Websocket}
  8. />
  9. ……
  10. )
  11. }
  1. /*
  2. * @desc:接收服务端数据时触发
  3. */
  4. onMessage = (data) => {
  5. console.log(data)
  6. }

 这样可以在页面加载向服务端建立连接,在向连接发送数据时,希望是已经建立连接,这就需要通过Socket.readyState属性判断连接状态。

react-websocket并没有提供很方便的方法或回调让我们判断该状态,通过this.refWebSocket.state.ws.readyState判断连接状态,如果没连接成功可以多次尝试或给出友好提示。

  1. /*
  2. * @desc:读取身份证信息
  3. */
  4. readCard = () => {
  5. let readyState = this.getSocketReadyState();
  6. if (readyState == 1) {
  7. console.log('【开始读取】')
  8. const params = {
  9. module: 'idcard',
  10. function: 'readcard',
  11. parameter:
  12. {
  13. dev: '1',
  14. repeat: '1',
  15. readtype: '1'
  16. }
  17. }
  18. this.refWebSocketIDCard.sendMessage(JSON.stringify(params));
  19. } else {
  20. this.timeout = setTimeout(this.readCard, 2000);
  21. }
  22. }
  1. /*
  2. * @desc:webSocket链接状态
  3. */
  4. getSocketReadyState = () => {
  5. let readyState = this.refWebSocket.state.ws.readyState
  6. switch (readyState) {
  7. case 0:
  8. console.log('【身份证服务链接状态】', '连接尚未建立');
  9. break;
  10. case 1:
  11. console.log('【身份证服务链接状态】', '连接已建立,可以进行通信');
  12. break;
  13. case 2:
  14. console.log('【身份证服务链接状态】', '正在进行关闭');
  15. break;
  16. case 3:
  17. console.log('【身份证服务链接状态】', '连接已经关闭或者连接不能打开');
  18. //这里可以处理一些连接失败的业务片段
  19. break;
  20. }
  21. return readyState;
  22. }

GitHub - mehmetkose/react-websocket: Easy-to-use React component for websocket communications.https://github.com/mehmetkose/react-websocketreact-websocket - npmhttps://www.npmjs.com/package/react-websocket

 

WebSocket属性、事件、方法如下:

 截图来自:HTML5 WebSocket | 菜鸟教程

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/770775
推荐阅读
相关标签
  

闽ICP备14008679号