赞
踩
npm install --save react-websocket
import Websocket from 'react-websocket';
这里引入的是根目录下index.jsx,如果需要引入js文件可以使用
import Websocket from 'react-websocket/build/index';
- render() {
- return (
- ……
- <Websocket
- url={'ws://127.0.0.1:9995'}
- onMessage={this.onMessage.bind(this)}
- ref={Websocket => this.refWebSocket = Websocket}
- />
- ……
- )
- }
- /*
- * @desc:接收服务端数据时触发
- */
- onMessage = (data) => {
- console.log(data)
- }
这样可以在页面加载向服务端建立连接,在向连接发送数据时,希望是已经建立连接,这就需要通过Socket.readyState属性判断连接状态。
react-websocket并没有提供很方便的方法或回调让我们判断该状态,通过this.refWebSocket.state.ws.readyState判断连接状态,如果没连接成功可以多次尝试或给出友好提示。
- /*
- * @desc:读取身份证信息
- */
- readCard = () => {
- let readyState = this.getSocketReadyState();
- if (readyState == 1) {
- console.log('【开始读取】')
- const params = {
- module: 'idcard',
- function: 'readcard',
- parameter:
- {
- dev: '1',
- repeat: '1',
- readtype: '1'
- }
- }
- this.refWebSocketIDCard.sendMessage(JSON.stringify(params));
- } else {
- this.timeout = setTimeout(this.readCard, 2000);
- }
- }
- /*
- * @desc:webSocket链接状态
- */
- getSocketReadyState = () => {
- let readyState = this.refWebSocket.state.ws.readyState
- switch (readyState) {
- case 0:
- console.log('【身份证服务链接状态】', '连接尚未建立');
- break;
- case 1:
- console.log('【身份证服务链接状态】', '连接已建立,可以进行通信');
- break;
- case 2:
- console.log('【身份证服务链接状态】', '正在进行关闭');
- break;
- case 3:
- console.log('【身份证服务链接状态】', '连接已经关闭或者连接不能打开');
- //这里可以处理一些连接失败的业务片段
- break;
- }
- return readyState;
- }
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。