|
@@ -15,6 +15,7 @@ import 'package:liftmanager/common/common.dart';
|
|
import 'package:flustars/flustars.dart' as FlutterStars;
|
|
import 'package:flustars/flustars.dart' as FlutterStars;
|
|
import 'package:liftmanager/utils/toast.dart';
|
|
import 'package:liftmanager/utils/toast.dart';
|
|
import 'package:liftmanager/routers/fluro_navigator.dart';
|
|
import 'package:liftmanager/routers/fluro_navigator.dart';
|
|
|
|
+import 'dart:async';
|
|
|
|
|
|
class WebSocketProvide with ChangeNotifier{
|
|
class WebSocketProvide with ChangeNotifier{
|
|
List<dynamic> historyMessageqqq = [];//接收到哦的所有的历史消息
|
|
List<dynamic> historyMessageqqq = [];//接收到哦的所有的历史消息
|
|
@@ -24,7 +25,27 @@ class WebSocketProvide with ChangeNotifier{
|
|
String roomId;
|
|
String roomId;
|
|
bool socketIsConnect = false;
|
|
bool socketIsConnect = false;
|
|
bool isSend = true;
|
|
bool isSend = true;
|
|
|
|
+ Timer _timer;
|
|
|
|
+ void startTimer() {
|
|
|
|
+ //设置 10 秒回调一次
|
|
|
|
+ const period = const Duration(seconds: 10);
|
|
|
|
+ _timer = Timer.periodic(period, (timer) {
|
|
|
|
+ initLoop();
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ void cancelTimer() {
|
|
|
|
+ if (_timer != null) {
|
|
|
|
+ _timer.cancel();
|
|
|
|
+ _timer = null;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @override
|
|
|
|
+ void dispose() {
|
|
|
|
+ super.dispose();
|
|
|
|
+ cancelTimer();
|
|
|
|
+ }
|
|
|
|
|
|
// DartNotificationCenter.subscribe(
|
|
// DartNotificationCenter.subscribe(
|
|
// channel: CHANNEL_NAME,
|
|
// channel: CHANNEL_NAME,
|
|
@@ -87,6 +108,11 @@ class WebSocketProvide with ChangeNotifier{
|
|
isSend = true;
|
|
isSend = true;
|
|
print('websocket重连');
|
|
print('websocket重连');
|
|
}
|
|
}
|
|
|
|
+ // else {
|
|
|
|
+ // startTimer();
|
|
|
|
+ // }
|
|
|
|
+ cancelTimer();
|
|
|
|
+ startTimer();
|
|
socketIsConnect = true;
|
|
socketIsConnect = true;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -107,19 +133,20 @@ class WebSocketProvide with ChangeNotifier{
|
|
print(414141);
|
|
print(414141);
|
|
}
|
|
}
|
|
|
|
|
|
- void getOnlineUserEvent(id)async{
|
|
|
|
- SharedPreferences prefs = await SharedPreferences.getInstance();
|
|
|
|
- // String userStr = prefs.getString(id+"userOnline");
|
|
|
|
- String userStr = FlutterStars.SpUtil.getString(id+"userOnline");
|
|
|
|
- // List<dynamic>setUserList = userStr.map((item)=>jsonDecode(item)).toList();
|
|
|
|
- if(userStr!=null&&userStr!=""){
|
|
|
|
- List<dynamic>setUserList = jsonDecode(userStr);
|
|
|
|
- FastNotification.push("set_user",setUserList);
|
|
|
|
- // LogUtil.d(prefs.getString(id+"userOnline"));
|
|
|
|
- print(33333);
|
|
|
|
- }
|
|
|
|
|
|
+ //用户头像显示
|
|
|
|
+ // void getOnlineUserEvent(id)async{
|
|
|
|
+ // SharedPreferences prefs = await SharedPreferences.getInstance();
|
|
|
|
+ // // String userStr = prefs.getString(id+"userOnline");
|
|
|
|
+ // String userStr = FlutterStars.SpUtil.getString(id+"userOnline");
|
|
|
|
+ // // List<dynamic>setUserList = userStr.map((item)=>jsonDecode(item)).toList();
|
|
|
|
+ // if(userStr!=null&&userStr!=""){
|
|
|
|
+ // List<dynamic>setUserList = jsonDecode(userStr);
|
|
|
|
+ // FastNotification.push("set_user",setUserList);
|
|
|
|
+ // // LogUtil.d(prefs.getString(id+"userOnline"));
|
|
|
|
+ // print(33333);
|
|
|
|
+ // }
|
|
|
|
|
|
- }
|
|
|
|
|
|
+ // }
|
|
|
|
|
|
randomInt(int min, int max) {
|
|
randomInt(int min, int max) {
|
|
return new Random().nextInt(max) % (max - min + 1) + min;
|
|
return new Random().nextInt(max) % (max - min + 1) + min;
|
|
@@ -141,7 +168,16 @@ class WebSocketProvide with ChangeNotifier{
|
|
//正常消息
|
|
//正常消息
|
|
// historyMessageString.add(data.toString());
|
|
// historyMessageString.add(data.toString());
|
|
// setStringEvent(roomId,historyMessageString);
|
|
// setStringEvent(roomId,historyMessageString);
|
|
- List<String>strChat = prefs.getStringList(obj["sessionid"]);
|
|
|
|
|
|
+ // print(JsonEncoder().convert(prefs.getStringList(obj["sessionid"])));
|
|
|
|
+ print(123);
|
|
|
|
+ List<String>strChat;
|
|
|
|
+ // ignore: unrelated_type_equality_checks
|
|
|
|
+ if(prefs.getStringList(obj["sessionid"]) != ""){
|
|
|
|
+ strChat = prefs.getStringList(obj["sessionid"]);
|
|
|
|
+ }else {
|
|
|
|
+ strChat = [];
|
|
|
|
+ }
|
|
|
|
+
|
|
print(JsonEncoder().convert(data));
|
|
print(JsonEncoder().convert(data));
|
|
print("JsonEncoder().convert(data)---------------------");
|
|
print("JsonEncoder().convert(data)---------------------");
|
|
strChat.add(data);
|
|
strChat.add(data);
|
|
@@ -170,20 +206,29 @@ class WebSocketProvide with ChangeNotifier{
|
|
// if(prefs.getString(key+"userOnline") != null){
|
|
// if(prefs.getString(key+"userOnline") != null){
|
|
// strUserOnline = prefs.getString(key+"userOnline");
|
|
// strUserOnline = prefs.getString(key+"userOnline");
|
|
// }
|
|
// }
|
|
|
|
+ print(jsonEncode(value));
|
|
|
|
+ print("--------------------------------------///123456");
|
|
|
|
+ // value.forEach((key,item){
|
|
|
|
+ // if(value[key]["msgList"].length>0){
|
|
|
|
+ // // str.add(JsonEncoder().convert(item["msgList"]));
|
|
|
|
+ // item["msgList"].forEach((ii){
|
|
|
|
+ // str.add(JsonEncoder().convert(ii));
|
|
|
|
+ // });
|
|
|
|
+ // // str.add(item["msgList"].toString());
|
|
|
|
+ // }
|
|
|
|
+ // // if(item["flag"]){
|
|
|
|
+ // // strUserOnline.add(item.toString());
|
|
|
|
+ // // }
|
|
|
|
+
|
|
|
|
+ // });
|
|
|
|
|
|
- value.forEach((item){
|
|
|
|
- if(item["msgList"].length>0){
|
|
|
|
|
|
+ if(value["msgList"].length>0){
|
|
// str.add(JsonEncoder().convert(item["msgList"]));
|
|
// str.add(JsonEncoder().convert(item["msgList"]));
|
|
- item["msgList"].forEach((ii){
|
|
|
|
|
|
+ value["msgList"].forEach((ii){
|
|
str.add(JsonEncoder().convert(ii));
|
|
str.add(JsonEncoder().convert(ii));
|
|
});
|
|
});
|
|
// str.add(item["msgList"].toString());
|
|
// str.add(item["msgList"].toString());
|
|
}
|
|
}
|
|
- // if(item["flag"]){
|
|
|
|
- // strUserOnline.add(item.toString());
|
|
|
|
- // }
|
|
|
|
-
|
|
|
|
- });
|
|
|
|
// strUserOnline = value.toString();
|
|
// strUserOnline = value.toString();
|
|
strUserOnline = JsonEncoder().convert(value);
|
|
strUserOnline = JsonEncoder().convert(value);
|
|
|
|
|
|
@@ -191,62 +236,24 @@ class WebSocketProvide with ChangeNotifier{
|
|
setOnlineUserEvent(key+"userOnline",strUserOnline);
|
|
setOnlineUserEvent(key+"userOnline",strUserOnline);
|
|
});
|
|
});
|
|
LogUtil.d(msgObj);
|
|
LogUtil.d(msgObj);
|
|
- print("456456111------------------------");
|
|
|
|
|
|
+ // print("456456111------------------------");
|
|
// msgList.forEach((item){
|
|
// msgList.forEach((item){
|
|
// historyMessageString.add(jsonEncode(item));
|
|
// historyMessageString.add(jsonEncode(item));
|
|
// });
|
|
// });
|
|
// setStringEvent();
|
|
// setStringEvent();
|
|
- }else if(obj["cmd"] =="SYSTEM"){
|
|
|
|
- //系统消息
|
|
|
|
- List<dynamic>userList = jsonDecode(obj["msg"]);
|
|
|
|
- // List<String>userListStr = [];
|
|
|
|
- // userList.forEach((item){
|
|
|
|
- // print(item);
|
|
|
|
- // userListStr.add(item.toString());
|
|
|
|
- // });
|
|
|
|
-
|
|
|
|
- // List<dynamic>userList = jsonDecode(obj["msg"]).map((t)=>jsonDecode(t)).toList();
|
|
|
|
- String setUserListStr;
|
|
|
|
- List<dynamic>setUserList=[];
|
|
|
|
- LogUtil.d(userList);
|
|
|
|
- // prefs.setString(userList[0]["sessionId"].toString()+"userOnline",obj["msg"]);
|
|
|
|
- FlutterStars.SpUtil.putString(userList[0]["sessionId"].toString()+"userOnline",obj["msg"]);
|
|
|
|
- // userList.forEach((item){
|
|
|
|
- // // LogUtil.d(item.avatarUrl);
|
|
|
|
- // // LogUtil.d(item["avatarUrl"]);
|
|
|
|
- // // var params = {
|
|
|
|
- // // "avatarUrl":item["avatarUrl"],
|
|
|
|
- // // "name":item["name"],
|
|
|
|
- // // "flag":item["flag"],
|
|
|
|
- // // };
|
|
|
|
- // // setUserList.add(params);
|
|
|
|
- // List<String>str =
|
|
|
|
- // List<dynamic>strObj = str.map((t)=>jsonDecode(t)).toList();
|
|
|
|
- // List<dynamic>lastObj = [];
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- // strObj.forEach((val){
|
|
|
|
- // if(item["userId"] == val["userId"]){
|
|
|
|
- // lastObj.addAll(item);
|
|
|
|
- // }else {
|
|
|
|
- // lastObj.addAll(val);
|
|
|
|
- // }
|
|
|
|
-
|
|
|
|
- // });
|
|
|
|
-
|
|
|
|
- // });
|
|
|
|
- if(userList[0]["sessionId"].toString()==roomId){
|
|
|
|
- // setUserListStr = prefs.getString(userList[0]["sessionId"].toString()+"userOnline");
|
|
|
|
- setUserListStr = FlutterStars.SpUtil.getString(userList[0]["sessionId"].toString()+"userOnline");
|
|
|
|
- print(JsonEncoder().convert(setUserListStr));
|
|
|
|
- print(56566666);
|
|
|
|
- setUserList = jsonDecode(setUserListStr);
|
|
|
|
- print(JsonEncoder().convert(setUserList));
|
|
|
|
- print(roomId);
|
|
|
|
- print("roomId/////////////20200612150634081101746");
|
|
|
|
- FastNotification.push("set_user",setUserList); //触发通知
|
|
|
|
|
|
+ }else if (obj["cmd"] =="INITROOM"){
|
|
|
|
+ List<dynamic>msgListInitRoom = jsonDecode(obj["msg"]);
|
|
|
|
+ if(msgListInitRoom != null && msgListInitRoom != []){
|
|
|
|
+ List<String>strList = [];
|
|
|
|
+ msgListInitRoom.forEach((item){
|
|
|
|
+ strList.add(JsonEncoder().convert(item));
|
|
|
|
+ });
|
|
|
|
+ setStringEvent(obj["sessionid"],strList);
|
|
|
|
+ print(JsonEncoder().convert(msgListInitRoom));
|
|
|
|
+ print(prefs.getStringList(obj["sessionid"]));
|
|
|
|
+ print("JsonEncoder().convert(INITROOM)---------------------");
|
|
|
|
+ historyMessageqqq = msgListInitRoom;
|
|
|
|
+ FastNotification.push("chat_room",historyMessageqqq);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
@@ -297,8 +304,8 @@ class WebSocketProvide with ChangeNotifier{
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
roomId = id;
|
|
roomId = id;
|
|
- print(JsonEncoder().convert(roomId));
|
|
|
|
- print(555);
|
|
|
|
|
|
+ // print(JsonEncoder().convert(roomId));
|
|
|
|
+ // print(555);
|
|
var objs = {
|
|
var objs = {
|
|
"cmd":"CHAT",
|
|
"cmd":"CHAT",
|
|
"type":msgType,
|
|
"type":msgType,
|
|
@@ -315,32 +322,47 @@ class WebSocketProvide with ChangeNotifier{
|
|
channel.sink.add(text);
|
|
channel.sink.add(text);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ void initLoop(){//定时10秒发送
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ print("LOOP");
|
|
|
|
+ var objs = {
|
|
|
|
+ "cmd":"LOOP"
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ String text = json.encode(objs).toString();
|
|
|
|
+ // print(text);
|
|
|
|
+ // print(777);
|
|
|
|
+ channel.sink.add(text);
|
|
|
|
+ }
|
|
|
|
+
|
|
void incomeRoom(id){//进入房间
|
|
void incomeRoom(id){//进入房间
|
|
roomId = id;
|
|
roomId = id;
|
|
- getOnlineUserEvent(roomId);
|
|
|
|
- print(JsonEncoder().convert(roomId));
|
|
|
|
- print(555);
|
|
|
|
|
|
+ // getOnlineUserEvent(roomId);
|
|
|
|
+ // print(JsonEncoder().convert(roomId));
|
|
|
|
+ // print(555);
|
|
var objs = {
|
|
var objs = {
|
|
"cmd":"INITROOM",
|
|
"cmd":"INITROOM",
|
|
"type":1,
|
|
"type":1,
|
|
"avatarUrl":FlutterStars.SpUtil.getString("avatarUrl"),
|
|
"avatarUrl":FlutterStars.SpUtil.getString("avatarUrl"),
|
|
"time": DateTime.now().millisecondsSinceEpoch,
|
|
"time": DateTime.now().millisecondsSinceEpoch,
|
|
"fromUser":int.parse(FlutterStars.SpUtil.getString(Constant.userId)),
|
|
"fromUser":int.parse(FlutterStars.SpUtil.getString(Constant.userId)),
|
|
|
|
+ "userId":int.parse(FlutterStars.SpUtil.getString(Constant.userId)),
|
|
"name":FlutterStars.SpUtil.getString("username"),
|
|
"name":FlutterStars.SpUtil.getString("username"),
|
|
"sessionid":roomId,
|
|
"sessionid":roomId,
|
|
- "msg":"我首次进入房间"
|
|
|
|
|
|
+ "msg":"进入房间"
|
|
};
|
|
};
|
|
|
|
|
|
String text = json.encode(objs).toString();
|
|
String text = json.encode(objs).toString();
|
|
- print(text);
|
|
|
|
- print(777);
|
|
|
|
|
|
+ // print(text);
|
|
|
|
+ // print(777);
|
|
channel.sink.add(text);
|
|
channel.sink.add(text);
|
|
}
|
|
}
|
|
void loginAllSeconds(id){//临时重新初始化房间
|
|
void loginAllSeconds(id){//临时重新初始化房间
|
|
roomId = id;
|
|
roomId = id;
|
|
- getOnlineUserEvent(roomId);
|
|
|
|
- print(JsonEncoder().convert(roomId));
|
|
|
|
- print(555);
|
|
|
|
|
|
+ // getOnlineUserEvent(roomId);
|
|
|
|
+ // print(JsonEncoder().convert(roomId));
|
|
|
|
+ // print(555);
|
|
var objs = {
|
|
var objs = {
|
|
"cmd":"LOGINALL",
|
|
"cmd":"LOGINALL",
|
|
"type":1,
|
|
"type":1,
|
|
@@ -353,13 +375,13 @@ class WebSocketProvide with ChangeNotifier{
|
|
};
|
|
};
|
|
|
|
|
|
String text = json.encode(objs).toString();
|
|
String text = json.encode(objs).toString();
|
|
- print(text);
|
|
|
|
- print(778);
|
|
|
|
|
|
+ // print(text);
|
|
|
|
+ // print(778);
|
|
channel.sink.add(text);
|
|
channel.sink.add(text);
|
|
}
|
|
}
|
|
void incomeFriend(id){//进入朋友房间
|
|
void incomeFriend(id){//进入朋友房间
|
|
roomId = id;
|
|
roomId = id;
|
|
- getOnlineUserEvent(roomId);
|
|
|
|
|
|
+ // getOnlineUserEvent(roomId);
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@@ -370,6 +392,7 @@ class WebSocketProvide with ChangeNotifier{
|
|
void onDone() {
|
|
void onDone() {
|
|
print('websocket断开了');
|
|
print('websocket断开了');
|
|
toasts("聊天室连接已断开!");
|
|
toasts("聊天室连接已断开!");
|
|
|
|
+ cancelTimer();
|
|
socketIsConnect = false;
|
|
socketIsConnect = false;
|
|
isSend = false;
|
|
isSend = false;
|
|
// closeWebSocket();
|
|
// closeWebSocket();
|