123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- import configService from '@/common/service/config.service.js';
- import store from '@/store/index.js';
- class socket {
- constructor(options) {
- this.socketUrl = configService.apiUrl;
- this.socketStart = false;
- this.monitorSocketError();
- this.monitorSocketClose();
- this.socketReceive();
- }
- init(socket_type,callback) {
- const _this = this;
- if (configService.apiUrl) {
- if(this.socketStart){
- console.log('webSocket已经启动了');
- }else{
- let userid=store.state.userid?store.state.userid:store.getters.userid;
- let url=this.socketUrl.replace("https://","wss://").replace("http://","ws://")+"/"+socket_type+"/"+userid+"_app";
- console.log("启动this.socketUrl连接地址:",url);
-
- uni.connectSocket({
- url: url,
- method: 'GET'
- });
- uni.onSocketOpen((res) => {
- this.socketStart = true;
- callback && callback();
- console.log('WebSocket连接已打开!');
- });
- /*setTimeout(() => {
- _this.getHeartbeat();
- }, 5000);*/
- }
- }else{
- console.log('config/baseUrl socketUrl为空');
- }
- }
- //Socket给服务器发送消息
- send(data, callback) {
- const _this = this;
- if (store.state.userid) {
- data.userUid =store.state.userid;
- }
- console.log(data);
- uni.sendSocketMessage({
- data: JSON.stringify(data),
- success: () => {
- callback && callback(true);
- },
- fail: () => {
- callback && callback(false);
- }
- });
- }
- //Socket接收服务器发送过来的消息
- socketReceive() {
- const _this = this;
- uni.onSocketMessage(function(res) {
- console.log("APP:----》收到服务器内容:",res);
- let data = JSON.parse(res.data);
- //console.log('收到服务器内容:', data);
- _this.acceptMessage && _this.acceptMessage(data);
- });
- }
- //关闭Socket
- closeSocket() {
- const _this = this;
- uni.closeSocket();
- _this.socketStart = false;
- }
- //监听Socket关闭
- monitorSocketClose() {
- const _this = this;
- uni.onSocketClose(function(res) {
- console.log('WebSocket 已关闭!');
- _this.socketStart = false;
- setTimeout(function() {
- //_this.init();
- }, 3000);
- });
- }
- //监听Socket错误
- monitorSocketError() {
- const _this = this;
- uni.onSocketError(function(res) {
- _this.socketStart = false;
- console.log('WebSocket连接打开失败,请检查!');
- });
- }
- //心跳
- getHeartbeat() {
- const _this = this;
- this.send({
- type: "心跳",
- userUid: store.state.userid
- }, (val) => {
- setTimeout(() => {
- if (val) {
- //_this.getHeartbeat();
- } else {
- if(!_this.socketStart){
- //_this.init();
- }
- }
- }, 10000);
- });
- }
- };
- const mySocket = new socket();
- export default mySocket;
|