WebClient.java 5.01 KB
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());
    }



}