WebClient.java
5.01 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
132
133
134
135
136
137
138
139
140
141
142
143
package com.huaheng.mmsrf.service;
//import static android.support.v4.content.ContextCompat.getSystemService;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.os.Build;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
import android.widget.Toast;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.huaheng.mmsrf.R;
import com.huaheng.mmsrf.bean.Constant;
import com.huaheng.mmsrf.util.WMSUtils;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.drafts.Draft_6455;
import org.java_websocket.handshake.ServerHandshake;
import org.json.JSONObject;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.Map;
/**
* Created by youjie on 2021/2/24
*/
public class WebClient extends WebSocketClient{
public static final String ACTION_RECEIVE_MESSAGE = "com.jinuo.mhwang.servermanager";
public static final String KEY_RECEIVED_DATA = "data";
private static WebClient mWebClient;
private Context mContext;
private int notify_id = 0;
/**
* 路径为ws+服务器地址+服务器端设置的子路径+参数(这里对应服务器端机器编号为参数)
* 如果服务器端为https的,则前缀的ws则变为wss
*/
// private static final String mAddress = "ws://172.16.27.212:8888/wms/websocket/";
private static final String mAddress = "ws://172.16.43.150:8080/jeecg-boot/websocket/1531440168677007362";
private static void showLog(String msg){
Log.d("WMSLog", msg);
}
private WebClient(URI serverUri, Context context){
super(serverUri, new Draft_6455());
mContext = context;
showLog("WebClient");
}
@Override
public void onOpen(ServerHandshake handshakedata) {
showLog("open->"+handshakedata.toString());
}
@Override
public void onMessage(String message) {
showLog("onMessage->"+message);
sendMessageBroadcast(message);
}
@Override
public void onClose(int code, String reason, boolean remote) {
showLog("onClose->"+reason);
}
@Override
public void onError(Exception ex) {
showLog("onError->"+ex.toString());
}
/** 初始化
* @param vmc_no
*/
public static void initWebSocket(final Context context, final long vmc_no){
new Thread(new Runnable() {
@Override
public void run() {
try {
mWebClient = new WebClient(new URI(mAddress), context);
try {
boolean success = mWebClient.connectBlocking();
showLog("connectBlocking->"+ success);
} catch (Exception e) {
e.printStackTrace();
showLog("connectBlocking->"+ e.getMessage());
}
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
}).start();
}
/** 发送消息广播
* @param message
*/
private void sendMessageBroadcast(String message){
if (!message.isEmpty()){
Intent intent = new Intent();
intent.setAction(ACTION_RECEIVE_MESSAGE);
intent.putExtra(KEY_RECEIVED_DATA,message);
Gson gson = new Gson();
Map map = new HashMap();
map = gson.fromJson(message, map.getClass());
System.out.println(map.get("msgTxt"));
String userid=map.get("userId").toString();
String loginuserid= WMSUtils.getData(Constant.USER_ID);
System.out.println(loginuserid);
String title=map.get("title").toString();
String content=map.get("msgTxt").toString();
show(title,content);
mContext.sendBroadcast(intent);
}
}
public void show(String title,String content){
NotificationManager manager = (NotificationManager) mContext.getSystemService(mContext.NOTIFICATION_SERVICE);
NotificationCompat.Builder builder = new NotificationCompat.Builder(mContext);
builder.setTicker("来自MTS通知");//通知首次出现在通知栏,带上升动画效果的
builder.setAutoCancel(true);//点击后消失
builder.setSmallIcon(R.mipmap.notification);//设置通知栏消息标题的头像
builder.setDefaults(NotificationCompat.DEFAULT_SOUND);//设置通知铃声
builder.setContentTitle(title);//设置标题
builder.setContentText(content);//设置内容
builder.setPriority(Notification.PRIORITY_DEFAULT); //设置该通知优先级
//利用PendingIntent来包装我们的intent对象,使其延迟跳转 设置通知栏点击意图
//builder.setContentIntent(createIntent(json));
// builder.setDeleteIntent(createDeleteIntent(json));
manager.notify(0, builder.build());
}
}