socket.js
4.0 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
// import axios from "axios";
// let base = 'empt-location/userPayOrder';
// var socket;
//
// function openSocket(orderNum) {
// console.log(orderNum);
// if(typeof(WebSocket) == "undefined") {
// console.log("您的浏览器不支持WebSocket");
// }else{
// console.log("您的浏览器支持WebSocket");
// //实现化WebSocket对象,指定要连接的服务器地址与端口 建立连接
// //等同于socket = new WebSocket("ws://localhost:8888/xxxx/im/25");
// //var socketUrl="${request.contextPath}/im/"+$("#userId").val();
// var socketUrl="http://localhost:10003/imserver/"+orderNum;
// socketUrl=socketUrl.replace("https","ws").replace("http","ws");
// console.log(socketUrl);
// if(socket!=null){
// socket.close();
// socket=null;
// }
// socket = new WebSocket(socketUrl);
// //打开事件
// socket.onopen = function() {
// console.log("websocket已打开");
// //socket.send("这是来自客户端的消息" + location.href + new Date());
// };
// //获得消息事件
// socket.onmessage = function(msg) {
//
// console.log(msg.data);
// return msg;
// //发现消息进入 开始处理前端触发逻辑
// };
// //关闭事件
// socket.onclose = function() {
// console.log("websocket已关闭");
// };
// //发生了错误事件
// socket.onerror = function() {
// console.log("websocket发生了错误");
// }
// }
// }
// function sendMessage() {
// if(typeof(WebSocket) == "undefined") {
// console.log("您的浏览器不支持WebSocket");
// }else {
// console.log("您的浏览器支持WebSocket");
// console.log('{"toUserId":"'+$("#toUserId").val()+'","contentText":"'+$("#contentText").val()+'"}');
// socket.send('{"toUserId":"'+$("#toUserId").val()+'","contentText":"'+$("#contentText").val()+'"}');
// }
// }
//
//
// export default {
// openSocket
// }
const WSS_URL = `ws://localhost:10003/imserver`
let Socket = ''
let setIntervalWesocketPush = null
/**建立连接 */
export function createSocket() {
// var socketUrl="http://localhost:10003/imserver";
var socketUrl="http://10.5.10.98:10003/imserver";
socketUrl=socketUrl.replace("https","ws").replace("http","ws");
console.log(socketUrl);
if (!Socket) {
console.log('建立websocket连接')
Socket = new WebSocket(socketUrl)
Socket.onopen = onopenWS
Socket.onmessage = onmessageWS
Socket.onerror = onerrorWS
Socket.onclose = oncloseWS
} else {
console.log('websocket已连接')
}
}
/**打开WS之后发送心跳 */
export function onopenWS() {
sendPing() //发送心跳
}
/**连接失败重连 */
export function onerrorWS() {
clearInterval(setIntervalWesocketPush)
Socket.close()
createSocket() //重连
}
/**WS数据接收统一处理 */
export function onmessageWS(e) {
console.log(e.data);
window.dispatchEvent(new CustomEvent('onmessageWS', {
detail: {
data: e
}
}))
}
/**发送数据
* @param eventType
*/
export function sendWSPush(eventTypeArr) {
const obj = {
appId: 'airShip',
cover: 0,
event: eventTypeArr
}
if (Socket !== null && Socket.readyState === 3) {
Socket.close()
createSocket() //重连
} else if (Socket.readyState === 1) {
Socket.send(JSON.stringify(obj))
} else if (Socket.readyState === 0) {
setTimeout(() => {
Socket.send(JSON.stringify(obj))
}, 3000)
}
}
/**关闭WS */
export function oncloseWS() {
clearInterval(setIntervalWesocketPush)
console.log('websocket已断开')
}
/**发送心跳 */
export function sendPing() {
Socket.send('ping')
setIntervalWesocketPush = setInterval(() => {
Socket.send('ping')
}, 5000)
}