var signalR = (function() {
let recordCode = 0x1e;
let recordString = String.fromCharCode(recordCode);
let isConnectioned = false;
let _events = new Array();
//初始化相关事件
//消息发送事件
_events['send'] = function(obj) {
console.log(obj);
};
//消息接收事件
_events['receive'] = function(message) {
console.log(message);
};
//连接事件
_events['connection'] = function() {
console.log(message);
};
//连接关闭事件
_events['close'] = function() {
console.log('连接已经关闭');
};
//连接异常处理事件
_events['error'] = function(ex) {
console.log(ex);
};
return {
//事件绑定
on: function(eventName, eventMethod) {
if (_events[eventName] != null && _events[eventName] != undefined) {
_events[eventName] = eventMethod;
}
},
//连接方法
connection: function(url) {
let self = this;
wx.connectSocket({
url: url,
success: function(e) {
console.log(JSON.stringify(e))
},
fail: function(e) {
console.log(JSON.stringify(e))
}
});
wx.onSocketOpen(function() {
_events['connection']();
});
wx.onSocketClose(function() {
self.isConnectioned = false;
_events['close']();
});
//接收到消息
wx.onSocketMessage(function(res) {
try {
//console.log(res);
let jsonstr = String(res.data).replace(recordString, '');
if (jsonstr.indexOf('{}{') > -1) {
jsonstr = jsonstr.replace('{}', '');
}
let obj = JSON.parse(jsonstr);
//当收到返回消息type=1(调用方法)
if (obj.type == 1) {
_events['receive'](obj.arguments[0]);
}
} catch (ex) {
console.log('异常:' + ex);
console.log('收到服务器内容:' + res.data);
_events['receive'](res.data);
}
});
wx.onSocketError(function(ex) {
console.log(JSON.stringify(ex))
self.isConnectioned = false;
_events['error'](ex);
});
},
abortConnection: function() {
console.log(String(this.abortConnection.name));
wx.closeSocket();
},
sendMessage: function(data) {
let self = this;
if (!self.isConnectioned) {
_events['error']('未连接');
return;
}
let args = new Array();
args.push(data);
let body = {
arguments: args, //SignalR服务端接收时必须为数组参数
target: 'ServerTransferMessage', //SignalR端方法
type: 1,
};
//发送的数据,分隔符结尾:
let senddata = `${JSON.stringify(body)}${recordString}`;
wx.sendSocketMessage({
data: senddata,
success: function(res) {
_events['send'](res);
},
fail: function(ex) {
console.log(ex);
}
});
}
}
});
module.exports = {
signalR: signalR
}
const signalR = require('../../utils/signalR.js')
let _signalR = new signalR.signalR();
_signalR.on("receive", function(message) {
console.log('服务器返回消息回调方法:' + message);
if (message == null || message == "" || message.length == 0) {
console.log('服务器返回消息回调方法:' + message);
} else {
that.setData({
content: message
})
that.wordYun() //调用文字转语音
}
});
var _paramInfo = {
ClientId: res.data.ID,
ClientName: res.data.Username,
ClientType: res.data.Type
}
_signalR.on("connection", function() {
//消息格式
var msg = {
messageType: 1, //消息类型 1.发送连接消息 2.普通内容消息 98.连接回执消息
sendUserId: '1', //消息发送人(登录用户ID)
messageBody: 'online' //消息内容
};
//_signalR.sendMessage(JSON.stringify(msg));
});
_signalR.connection(
'wss://yqjcxt.njrgrj.com/api/Message?clientID=' + res.data.ID
);