java websocket即时通讯+layui实现移动端一对一聊天客服功能

  • 效果图
    在这里插入图片描述
    在这里插入图片描述

  • java代码

package com.websocket;

import java.io.IOException;

import java.util.concurrent.ConcurrentHashMap;

import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import net.sf.json.JSONObject;
//该注解用来指定一个URI,客户端可以通过这个URI来连接到WebSocket。类似Servlet的注解mapping。无需在web.xml中配置。
//chatDemo:表示访问的具体url。{sendUser}:表示在url上的参数
@ServerEndpoint("/chatDemo/{sendUser}")
public class Chat{
	// 用户在线数
	private static int onLineCount = 0;
	// 当前的websocket对象
	private static ConcurrentHashMap<String, Chat> webSocketMap = new ConcurrentHashMap<String, Chat>();
	// 当前会话,属于websocket的session
	private Session session;
	// 聊天信息
	private String sendUser;// 当前用户
	private String toUser;// 接收人
	private String message;// 聊天信息
	/**
	 * 连接建立成功调用的方法
	 * @param session 可选的参数。session为与某个客户端的连接会话,需要通过它来给客户端发送数据
	 * @PathParam("sendUser") 表示可以在访问的时候带上参数,参数:sendUser为  @ServerEndpoint("/chatDemo/{sendUser}")
	 * @throws IOException
	 */
	@OnOpen
	public void onOpen(@PathParam("sendUser") String sendUser,Session session) throws IOException {
		this.sendUser = sendUser;
		this.session = session;
		addOnlineCount();
		System.out.println("有新连接加入!当前在线人数为" + getOnlineCount() + " 当前session是" + session.hashCode());
 
		webSocketMap.put(sendUser, this);//当前用户的websocket
		// 刷新在线人数
		for (Chat chat : webSocketMap.values()) {
			//使用if判断是要统计人数还是发送消息
			//chat.sendMessage("count",getOnlineCount() + "");
			System.out.println("count--->"+getOnlineCount() + "");
		}
	}
 
	/**
	 * 连接关闭所调用的方法
	 * 
	 * @return
	 * @throws IOException 
	 */
	@OnClose
	public void onClose() throws IOException {
		// 在线数减1
		subOnlineCount();
		
		for (Chat chat : webSocketMap.values()) {
			//说明当前的session已经被关闭
			if(chat.session != this.session){
				//chat.sendMessage("count", getOnlineCount() + "");
			}
		}
		webSocketMap.remove(sendUser);
		System.out.println("有一连接关闭!当前在线人数为" + getOnlineCount());
	}
 

	@OnMessage
	public void onMessage(String jsonMsg, Session session) throws IOException {
		JSONObject jsonOject = JSONObject.fromObject(jsonMsg);
		sendUser = jsonOject.getString("sendUser");
		toUser = jsonOject.getString("toUser");
		message = jsonOject.getString("message");

		// 得到接收人
		Chat user = webSocketMap.get(toUser);
		if (user == null) {//如果接收人不存在则保持到数据库
			System.out.println("信息已保存到数据库");
			return;
		}
		user.sendMessage("send",message);
	}
	/**
	 * 发成错误所调用的方法
	 * @param session
	 * @param error
	 */
	@OnError
	public void onError(Session session, Throwable error) {
		System.out.println("发生错误");
		error.printStackTrace();
	}
 

	public void sendMessage(String type,String message) throws IOException {
		if(type.equals("count")){
			this.session.getBasicRemote().sendText("count:" + message);//在jsp判断是否包含count
		}else{
			this.session.getBasicRemote().sendText(message);//提供阻塞式的消息发送方式
			// this.session.getAsyncRemote().sendText(message);//提供非阻塞式的消息传输方式。
		}
		
		
	}
 
	// 获得当前在线人数
	public static synchronized int getOnlineCount() {
		return onLineCount;
	}
 
	// 新用户
	public static synchronized void addOnlineCount() {
		Chat.onLineCount++;
	}
 
	// 移除退出用户
	public static synchronized void subOnlineCount() {
		Chat.onLineCount--;
	}
}

  • 用户端html代码
<!DOCTYPE html>
<html>

	<head>
		<meta http-equiv="content-type" content="text/html; charset=UTF-8">
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
		<title></title>

		<link rel="stylesheet" href="LayIM_files/layui.css">
		<link id="layuicss-skinlayim-mobilecss" rel="stylesheet" href="LayIM_files/layim.css" media="all">
		<style type="text/css">
			body .layui-layim-tab {
				display: none;
			}
		</style>
	</head>

	<body>
		<script src="LayIM_files/layui.js"></script>
		<script src="LayIM_files/jquery-3.0.0.min.js"></script>
		<script>
			;
			(function($) {
				$.getUrlParam = function(name) {
					var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
					var r = window.location.search.substr(1).match(reg);
					if(r != null) return unescape(r[2]);
					return null;
				}
			})(jQuery);
			var _sendUser = $.getUrlParam('sendUser');
			var _toUser = $.getUrlParam('toUser');
			console.log("_sendUser--》" + _sendUser)
			console.log("_toUser--》" + _toUser)

			var sendUser = null;
			var toUser = null;

			$.ajax({
				url: '/GetObj',
				type: 'POST',
				data: 'numder=' + _sendUser,
				async: false, //异步
				dataType: 'json',
				success: function(data) {
					sendUser = data.obj
				},
				error: function(ex) {
					console.log(ex);
				}
			});
			$.ajax({
				url: '/GetObj',
				type: 'POST',
				data: 'numder=' + _toUser,
				dataType: 'json',
				async: false, //异步
				success: function(data) {
					toUser = data.obj
				},
				error: function(ex) {
					console.log(ex);
				}
			});
			layui.config({
				version: '20171011',

			}).use('mobile', function() {
				var mobile = layui.mobile,
					layim = mobile.layim,
					layer = mobile.layer;
				var socket = new WebSocket('ws://zhao.natapp1.cc/chatDemo/' + _sendUser);
				console.log(toUser);
				console.log(sendUser)
				//监听收到的消息
				socket.onmessage = function(res) {
					console.log(res)
					layim.getMessage({
						username: toUser.name,
						avatar: toUser.url,
						id: toUser.id,
						type: "friend",
						cid: Math.random() * 100000 | 0 //模拟消息id,会赋值在li的data-cid上,以便完成一些消息的操作(如撤回),可不填
							,
						content: res.data
					});
					//      var jsonMsg = {"sendUser":5,"toUser":1,"message":"jkkk"}
					//      socket.send(JSON.stringify(jsonMsg));
					//res为接受到的值,如 {"emit": "messageName", "data": {}}

				};

				//演示自动回复
				var autoReplay = [
					'您好,我现在有事不在,一会再和您联系。',
					'你没发错吧?face[微笑] ',
					'洗澡中,请勿打扰,偷窥请购票,个体四十,团体八折,订票电话:一般人我不告诉他!face[哈哈] ',
					'你好,我是主人的美女秘书,有什么事就跟我说吧,等他回来我会转告他的。face[心] face[心] face[心] ',
					'face[威武] face[威武] face[威武] face[威武] ',
					'<(@ ̄︶ ̄@)>',
					'你要和我说话?你真的要和我说话?你确定自己想说吗?你一定非说不可吗?那你说吧,这是自动回复。',
					'face[黑线]  你慢慢说,别急……',
					'(*^__^*) face[嘻嘻] ,是贤心吗?'
				];

				layim.config({


					title:'消息',
					chatTitleColor:'gray',

					init: {
						//我的信息
						mine: {
							username: sendUser.name,
							id: sendUser.id,
							avatar: sendUser.url,
							sign: "懒得签名"
						}
						//我的好友列表
						,
						friend: [{}]

					}

					//扩展更多列表
					,
					moreList: []

					//,isNewFriend: false //是否开启“新的朋友”
					//,isgroup: true //是否开启“群聊”
					//,chatTitleColor: '#c00' //顶部Bar颜色
					//,title: 'LayIM' //应用名,默认:我的IM
				});


				//创建一个会话

				layim.chat({
					id: toUser.id
					,name: toUser.name
					,type: 'friend' //friend、group等字符,如果是group,则创建的是群聊
					,avatar: toUser.url
				});


				//监听点击“新的朋友”
				layim.on('newFriend', function() {
					layim.panel({
						title: '新的朋友' //标题
							,
						tpl: '<div style="padding: 10px;">自定义模版,{{d.data.test}}</div>' //模版
							,
						data: { //数据
							test: '么么哒'
						}
					});
				});

				//查看聊天信息
				layim.on('detail', function(data) {
					//console.log(data); //获取当前会话对象
					layim.panel({
						title: data.name + ' 聊天信息' //标题
							,
						tpl: '<div style="padding: 10px;">自定义模版,<a href="http://www.layui.com/doc/modules/layim_mobile.html#ondetail" target="_blank">参考文档</a></div>' //模版
							,
						data: { //数据
							test: '么么哒'
						}
					});
				});

				//监听点击更多列表
				layim.on('moreList', function(obj) {
					switch(obj.alias) {
						case 'find':
							layer.msg('自定义发现动作');

							//模拟标记“发现新动态”为已读
							layim.showNew('More', false);
							layim.showNew('find', false);
							break;
						case 'share':
							layim.panel({
								title: '邀请好友' //标题
									,
								tpl: '<div style="padding: 10px;">自定义模版,{{d.data.test}}</div>' //模版
									,
								data: { //数据
									test: '么么哒'
								}
							});
							break;
					}
				});

				//监听发送消息
				layim.on('sendMessage', function(data) {

					// console.log(data.mine.content)
					// console.log("sign"+data.to.sign)
					var jsonMsg = {
						"sendUser": _sendUser,
						"toUser": _toUser,
						"message": data.mine.content
					}
					socket.send(JSON.stringify(jsonMsg));
					//  //演示自动回复
					//  setTimeout(function(){
					//    var obj = {};
					//    if(To.type === 'group'){
					//      obj = {
					//        username: '模拟群员'+(Math.random()*100|0)
					//        ,avatar: layui.cache.dir + 'images/face/'+ (Math.random()*72|0) + '.gif'
					//        ,id: To.id
					//        ,type: To.type
					//        ,content: autoReplay[Math.random()*9|0]
					//      }
					//    } else {
					//      obj = {
					//        username: To.name
					//        ,avatar: To.avatar
					//        ,id: To.id
					//        ,type: To.type
					//        ,content: autoReplay[Math.random()*9|0]
					//      }
					//    }
					//    layim.getMessage(obj);
					//  }, 1000);
				});

				//模拟收到一条好友消息
				// setTimeout(function() {
				// 	layim.getMessage({
				// 		username: toUser.name,
				// 		avatar: toUser.url,
				// 		id: toUser.id,
				// 		type: "friend",
				// 		cid: Math.random() * 100000 | 0 //模拟消息id,会赋值在li的data-cid上,以便完成一些消息的操作(如撤回),可不填
				// 			,
				// 		content: "嗨,欢迎体验LayIM。演示标记:" + new Date().getTime()
				// 	});
				// }, 2000);

				//监听查看更多记录
				layim.on('chatlog', function(data, ul) {
					console.log(data);
					layim.panel({
						title: '与 ' + data.username + ' 的聊天记录' //标题
							,
						tpl: '<div style="padding: 10px;">这里是模版,{{d.data.test}}</div>' //模版
							,
						data: { //数据
							test: 'Hello'
						}
					});
				});

				//模拟"更多"有新动态
				layim.showNew('More', true);
				layim.showNew('find', true);
			});
		</script>

		<div id="layui-m-layer0" class="layui-m-layer layui-m-layer1" index="0">
			<div class="layui-m-layermain">
				<div class="layui-m-layersection">
					<div class="layui-m-layerchild  layui-m-anim--1">
						<div class="layui-m-layercont">
							<div class="layim-panel">
								<div class="layim-title" style="background-color: #36373C;">
									<p>消息<span class="layim-chat-status"></span></p>
								</div>
								<div class="layui-unselect layim-content">
									<div class="layui-layim">
<!--										<div class="layim-tab-content">-->
<!--											<ul class="layim-list-friend">-->
<!--												<ul class="layui-layim-list layui-show layim-list-history">-->
<!--													<li layim-event="chat" data-type="history" data-index="friend100001" class="layim-friend100001 ">-->
<!--														<div><img src="LayIM_files/5db11ff4gw1e77d3nqrv8j203b03cweg.jpg"></div><span>贤心</span>-->
<!--														<p>嗨,欢迎体验LayIM。演示标记:1583116141246</p><span class="layim-msg-status layui-show">1</span></li>-->
<!--													<li layim-event="chat" data-type="history" data-index="friend100001222" class="layim-friend100001222 ">-->
<!--														<div><img src="LayIM_files/475bb144jw8f9nwebnuhkj20v90vbwh9.jpg"></div><span>刘涛tamia</span>-->
<!--														<p>&lt;(@ ̄︶ ̄@)&gt;</p><span class="layim-msg-status">new</span></li>-->
<!--												</ul>-->
<!--											</ul>-->
<!--										</div>-->
										<div class="layim-tab-content  layui-show">
											<ul class="layim-list-friend">
												<li>
													<h5 layim-event="spread" lay-type="true"><i class="layui-icon"></i><span>知名人物</span><em>(<cite class="layim-count"> 5</cite>)</em></h5>
													<ul class="layui-layim-list  layui-show">
														<li layim-event="chat" data-type="friend" data-index="0" class="layim-friend100001 ">
															<div><img src="LayIM_files/5db11ff4gw1e77d3nqrv8j203b03cweg.jpg"></div><span>贤心</span>
															<p>这些都是测试数据,实际使用请严格按照该格式返回</p><span class="layim-msg-status">new</span></li>
														<li layim-event="chat" data-type="friend" data-index="0" class="layim-friend100001222 ">
															<div><img src="LayIM_files/475bb144jw8f9nwebnuhkj20v90vbwh9.jpg"></div><span>刘涛tamia</span>
															<p>如约而至,不负姊妹欢乐颂</p><span class="layim-msg-status">new</span></li>
														<li layim-event="chat" data-type="friend" data-index="0" class="layim-friend10034001 ">
															<div><img src="LayIM_files/633f068fjw8f9h040n951j20ku0kr74t.jpg"></div><span>谢楠</span>
															<p></p><span class="layim-msg-status">new</span></li>
														<li layim-event="chat" data-type="friend" data-index="0" class="layim-friend168168 ">
															<div><img src="LayIM_files/7fde8b93jw1e8qgp5bmzyj2050050aa8.jpg"></div><span>马小云</span>
															<p>让天下没有难写的代码</p><span class="layim-msg-status">new</span></li>
														<li layim-event="chat" data-type="friend" data-index="0" class="layim-friend666666 ">
															<div><img src="LayIM_files/6a4acad5jw8eqi6yaholjj20e80e8t9f.jpg"></div><span>徐小峥</span>
															<p>代码在囧途,也要写到底</p><span class="layim-msg-status">new</span></li>
													</ul>
												</li>
												<li>
													<h5 layim-event="spread" lay-type="undefined"><i class="layui-icon"></i><span>网红</span><em>(<cite class="layim-count"> 5</cite>)</em></h5>
													<ul class="layui-layim-list ">
														<li layim-event="chat" data-type="friend" data-index="1" class="layim-friend121286 ">
															<div><img src="LayIM_files/4a02849cjw8fc8vn18vktj20hs0hs75v.jpg"></div><span>罗玉凤</span>
															<p>在自己实力不济的时候,不要去相信什么媒体和记者。他们不是善良的人,有时候候他们的采访对当事人而言就是陷阱</p><span class="layim-msg-status">new</span></li>
														<li layim-event="chat" data-type="friend" data-index="1" class="layim-friend108101 ">
															<div><img src="LayIM_files/8693225ajw8fbimjimpjwj20yi0zs77l.jpg"></div><span>Z_子晴</span>
															<p>微电商达人</p><span class="layim-msg-status">new</span></li>
														<li layim-event="chat" data-type="friend" data-index="1" class="layim-friend12123454 ">
															<div><img src="LayIM_files/images/icon/005LMAegjw8f2bp9qg4mrj30e80e8dg5.jpg"></div><span>大鱼_MsYuyu</span>
															<p>我瘋了!這也太準了吧 超級笑點低</p><span class="layim-msg-status">new</span></li>
														<li layim-event="chat" data-type="friend" data-index="1" class="layim-friend102101 ">
															<div><img src="LayIM_files/6d424ea5jw1e8qgp5bmzyj2050050aa8.jpg"></div><span>Lemon_CC</span>
															<p></p><span class="layim-msg-status">new</span></li>
														<li layim-event="chat" data-type="friend" data-index="1" class="layim-friend3435343 ">
															<div><img src="LayIM_files/961a9be5jw8fczq7q98i7j20kv0lcwfn.jpg"></div><span>柏雪近在它香</span>
															<p></p><span class="layim-msg-status">new</span></li>
													</ul>
												</li>
												<li>
													<h5 layim-event="spread" lay-type="true"><i class="layui-icon"></i><span>我心中的女神</span><em>(<cite class="layim-count"> 2</cite>)</em></h5>
													<ul class="layui-layim-list  layui-show">
														<li layim-event="chat" data-type="friend" data-index="2" class="layim-friend76543 ">
															<div><img src="LayIM_files/48f122e6jw8fcmi072lkyj20e80e8t9i.jpg"></div><span>林心如</span>
															<p>我爱贤心</p><span class="layim-msg-status">new</span></li>
														<li layim-event="chat" data-type="friend" data-index="2" class="layim-friend4803920 ">
															<div><img src="LayIM_files/5033b6dbjw8etqysyifpkj20ku0kuwfw.jpg"></div><span>佟丽娅</span>
															<p>我也爱贤心吖吖啊</p><span class="layim-msg-status">new</span></li>
													</ul>
												</li>
											</ul>
										</div>
										<div class="layim-tab-content">

										</div>
									</div>
								
								</div>
							</div>
						</div>
					</div>
				</div>
			</div>
		</div>
	</body>

</html>
  • 客服端html
<!DOCTYPE html>
<html>

	<head>
		<meta http-equiv="content-type" content="text/html; charset=UTF-8">
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
		<title></title>

		<link rel="stylesheet" href="LayIM_files/layui.css">
		<link id="layuicss-skinlayim-mobilecss" rel="stylesheet" href="LayIM_files/layim.css" media="all">
		<style type="text/css">

			body .layui-layim-tab {
				display: none;
			}
		</style>
	</head>

	<body>
		<script src="LayIM_files/layui.js"></script>
		<script src="LayIM_files/jquery-3.0.0.min.js"></script>
		<script>
			;
			(function($) {
				$.getUrlParam = function(name) {
					var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
					var r = window.location.search.substr(1).match(reg);
					if(r != null) return unescape(r[2]);
					return null;
				}
			})(jQuery);
			var _sendUser = $.getUrlParam('sendUser');
			var _toUser = $.getUrlParam('toUser');
			console.log("_sendUser--》" + _sendUser)
			console.log("_toUser--》" + _toUser)

			var sendUser = null;
			var toUser = null;

			$.ajax({
				url: '/GetObj',
				type: 'POST',
				data: 'numder=' + _sendUser,
				async: false, //异步
				dataType: 'json',
				success: function(data) {
					sendUser = data.obj
				},
				error: function(ex) {
					console.log(ex);
				}
			});
			$.ajax({
				url: '/GetObj',
				type: 'POST',
				data: 'numder=' + _toUser,
				dataType: 'json',
				async: false, //异步
				success: function(data) {
					toUser = data.obj
				},
				error: function(ex) {
					console.log(ex);
				}
			});
			layui.config({
				version: '20171011',

			}).use('mobile', function() {
				var mobile = layui.mobile,
					layim = mobile.layim,
					layer = mobile.layer;
				var socket = new WebSocket('ws://zhao.natapp1.cc/chatDemo/' + _sendUser);
				console.log(toUser);
				console.log(sendUser)
				//监听收到的消息
				socket.onmessage = function(res) {
					console.log(res)
					layim.getMessage({
						username: toUser.name,
						avatar: toUser.url,
						id: toUser.id,
						type: "friend",
						cid: Math.random() * 100000 | 0 //模拟消息id,会赋值在li的data-cid上,以便完成一些消息的操作(如撤回),可不填
							,
						content: res.data
					});
					//      var jsonMsg = {"sendUser":5,"toUser":1,"message":"jkkk"}
					//      socket.send(JSON.stringify(jsonMsg));
					//res为接受到的值,如 {"emit": "messageName", "data": {}}

				};

				//演示自动回复
				var autoReplay = [
					'您好,我现在有事不在,一会再和您联系。',
					'你没发错吧?face[微笑] ',
					'洗澡中,请勿打扰,偷窥请购票,个体四十,团体八折,订票电话:一般人我不告诉他!face[哈哈] ',
					'你好,我是主人的美女秘书,有什么事就跟我说吧,等他回来我会转告他的。face[心] face[心] face[心] ',
					'face[威武] face[威武] face[威武] face[威武] ',
					'<(@ ̄︶ ̄@)>',
					'你要和我说话?你真的要和我说话?你确定自己想说吗?你一定非说不可吗?那你说吧,这是自动回复。',
					'face[黑线]  你慢慢说,别急……',
					'(*^__^*) face[嘻嘻] ,是贤心吗?'
				];

				layim.config({


					title:'消息',
					chatTitleColor:'gray',

					init: {
						//我的信息
						mine: {
							username: sendUser.name,
							id: sendUser.id,
							avatar: sendUser.url,
							sign: "懒得签名"
						}
						//我的好友列表
						,
						friend: [{}]

					}

					//扩展更多列表
					,
					moreList: []

					//,isNewFriend: false //是否开启“新的朋友”
					//,isgroup: true //是否开启“群聊”
					//,chatTitleColor: '#c00' //顶部Bar颜色
					//,title: 'LayIM' //应用名,默认:我的IM
				});


				//创建一个会话

				// layim.chat({
				// 	id: toUser.id
				// 	,name: toUser.name
				// 	,type: 'friend' //friend、group等字符,如果是group,则创建的是群聊
				// 	,avatar: toUser.url
				// });


				//监听点击“新的朋友”
				layim.on('newFriend', function() {
					layim.panel({
						title: '新的朋友' //标题
							,
						tpl: '<div style="padding: 10px;">自定义模版,{{d.data.test}}</div>' //模版
							,
						data: { //数据
							test: '么么哒'
						}
					});
				});

				//查看聊天信息
				layim.on('detail', function(data) {
					//console.log(data); //获取当前会话对象
					layim.panel({
						title: data.name + ' 聊天信息' //标题
							,
						tpl: '<div style="padding: 10px;">自定义模版,<a href="http://www.layui.com/doc/modules/layim_mobile.html#ondetail" target="_blank">参考文档</a></div>' //模版
							,
						data: { //数据
							test: '么么哒'
						}
					});
				});

				//监听点击更多列表
				layim.on('moreList', function(obj) {
					switch(obj.alias) {
						case 'find':
							layer.msg('自定义发现动作');

							//模拟标记“发现新动态”为已读
							layim.showNew('More', false);
							layim.showNew('find', false);
							break;
						case 'share':
							layim.panel({
								title: '邀请好友' //标题
									,
								tpl: '<div style="padding: 10px;">自定义模版,{{d.data.test}}</div>' //模版
									,
								data: { //数据
									test: '么么哒'
								}
							});
							break;
					}
				});

				//监听发送消息
				layim.on('sendMessage', function(data) {

					// console.log(data.mine.content)
					// console.log("sign"+data.to.sign)
					var jsonMsg = {
						"sendUser": _sendUser,
						"toUser": _toUser,
						"message": data.mine.content
					}
					socket.send(JSON.stringify(jsonMsg));
					//  //演示自动回复
					//  setTimeout(function(){
					//    var obj = {};
					//    if(To.type === 'group'){
					//      obj = {
					//        username: '模拟群员'+(Math.random()*100|0)
					//        ,avatar: layui.cache.dir + 'images/face/'+ (Math.random()*72|0) + '.gif'
					//        ,id: To.id
					//        ,type: To.type
					//        ,content: autoReplay[Math.random()*9|0]
					//      }
					//    } else {
					//      obj = {
					//        username: To.name
					//        ,avatar: To.avatar
					//        ,id: To.id
					//        ,type: To.type
					//        ,content: autoReplay[Math.random()*9|0]
					//      }
					//    }
					//    layim.getMessage(obj);
					//  }, 1000);
				});

				//模拟收到一条好友消息
				// setTimeout(function() {
				// 	layim.getMessage({
				// 		username: toUser.name,
				// 		avatar: toUser.url,
				// 		id: toUser.id,
				// 		type: "friend",
				// 		cid: Math.random() * 100000 | 0 //模拟消息id,会赋值在li的data-cid上,以便完成一些消息的操作(如撤回),可不填
				// 			,
				// 		content: "嗨,欢迎体验LayIM。演示标记:" + new Date().getTime()
				// 	});
				// }, 2000);

				//监听查看更多记录
				layim.on('chatlog', function(data, ul) {
					console.log(data);
					layim.panel({
						title: '与 ' + data.username + ' 的聊天记录' //标题
							,
						tpl: '<div style="padding: 10px;">这里是模版,{{d.data.test}}</div>' //模版
							,
						data: { //数据
							test: 'Hello'
						}
					});
				});

				//模拟"更多"有新动态
				layim.showNew('More', true);
				layim.showNew('find', true);
			});
		</script>

		<div id="layui-m-layer0" class="layui-m-layer layui-m-layer1" index="0">
			<div class="layui-m-layermain">
				<div class="layui-m-layersection">
					<div class="layui-m-layerchild  layui-m-anim--1">
						<div class="layui-m-layercont">
							<div class="layim-panel">
								<div class="layim-title" style="background-color: #36373C;">
									<p>消息<span class="layim-chat-status"></span></p>
								</div>
								<div class="layui-unselect layim-content">
									<div class="layui-layim">
<!--										<div class="layim-tab-content">-->
<!--											<ul class="layim-list-friend">-->
<!--												<ul class="layui-layim-list layui-show layim-list-history">-->
<!--													<li layim-event="chat" data-type="history" data-index="friend100001" class="layim-friend100001 ">-->
<!--														<div><img src="LayIM_files/5db11ff4gw1e77d3nqrv8j203b03cweg.jpg"></div><span>贤心</span>-->
<!--														<p>嗨,欢迎体验LayIM。演示标记:1583116141246</p><span class="layim-msg-status layui-show">1</span></li>-->
<!--													<li layim-event="chat" data-type="history" data-index="friend100001222" class="layim-friend100001222 ">-->
<!--														<div><img src="LayIM_files/475bb144jw8f9nwebnuhkj20v90vbwh9.jpg"></div><span>刘涛tamia</span>-->
<!--														<p>&lt;(@ ̄︶ ̄@)&gt;</p><span class="layim-msg-status">new</span></li>-->
<!--												</ul>-->
<!--											</ul>-->
<!--										</div>-->
										<div class="layim-tab-content  layui-show">
											<ul class="layim-list-friend">
												<li>
													<h5 layim-event="spread" lay-type="true"><i class="layui-icon"></i><span>知名人物</span><em>(<cite class="layim-count"> 5</cite>)</em></h5>
													<ul class="layui-layim-list  layui-show">
														<li layim-event="chat" data-type="friend" data-index="0" class="layim-friend100001 ">
															<div><img src="LayIM_files/5db11ff4gw1e77d3nqrv8j203b03cweg.jpg"></div><span>贤心</span>
															<p>这些都是测试数据,实际使用请严格按照该格式返回</p><span class="layim-msg-status">new</span></li>
														<li layim-event="chat" data-type="friend" data-index="0" class="layim-friend100001222 ">
															<div><img src="LayIM_files/475bb144jw8f9nwebnuhkj20v90vbwh9.jpg"></div><span>刘涛tamia</span>
															<p>如约而至,不负姊妹欢乐颂</p><span class="layim-msg-status">new</span></li>
														<li layim-event="chat" data-type="friend" data-index="0" class="layim-friend10034001 ">
															<div><img src="LayIM_files/633f068fjw8f9h040n951j20ku0kr74t.jpg"></div><span>谢楠</span>
															<p></p><span class="layim-msg-status">new</span></li>
														<li layim-event="chat" data-type="friend" data-index="0" class="layim-friend168168 ">
															<div><img src="LayIM_files/7fde8b93jw1e8qgp5bmzyj2050050aa8.jpg"></div><span>马小云</span>
															<p>让天下没有难写的代码</p><span class="layim-msg-status">new</span></li>
														<li layim-event="chat" data-type="friend" data-index="0" class="layim-friend666666 ">
															<div><img src="LayIM_files/6a4acad5jw8eqi6yaholjj20e80e8t9f.jpg"></div><span>徐小峥</span>
															<p>代码在囧途,也要写到底</p><span class="layim-msg-status">new</span></li>
													</ul>
												</li>
												<li>
													<h5 layim-event="spread" lay-type="undefined"><i class="layui-icon"></i><span>网红</span><em>(<cite class="layim-count"> 5</cite>)</em></h5>
													<ul class="layui-layim-list ">
														<li layim-event="chat" data-type="friend" data-index="1" class="layim-friend121286 ">
															<div><img src="LayIM_files/4a02849cjw8fc8vn18vktj20hs0hs75v.jpg"></div><span>罗玉凤</span>
															<p>在自己实力不济的时候,不要去相信什么媒体和记者。他们不是善良的人,有时候候他们的采访对当事人而言就是陷阱</p><span class="layim-msg-status">new</span></li>
														<li layim-event="chat" data-type="friend" data-index="1" class="layim-friend108101 ">
															<div><img src="LayIM_files/8693225ajw8fbimjimpjwj20yi0zs77l.jpg"></div><span>Z_子晴</span>
															<p>微电商达人</p><span class="layim-msg-status">new</span></li>
														<li layim-event="chat" data-type="friend" data-index="1" class="layim-friend12123454 ">
															<div><img src="LayIM_files/images/icon/005LMAegjw8f2bp9qg4mrj30e80e8dg5.jpg"></div><span>大鱼_MsYuyu</span>
															<p>我瘋了!這也太準了吧 超級笑點低</p><span class="layim-msg-status">new</span></li>
														<li layim-event="chat" data-type="friend" data-index="1" class="layim-friend102101 ">
															<div><img src="LayIM_files/6d424ea5jw1e8qgp5bmzyj2050050aa8.jpg"></div><span>Lemon_CC</span>
															<p></p><span class="layim-msg-status">new</span></li>
														<li layim-event="chat" data-type="friend" data-index="1" class="layim-friend3435343 ">
															<div><img src="LayIM_files/961a9be5jw8fczq7q98i7j20kv0lcwfn.jpg"></div><span>柏雪近在它香</span>
															<p></p><span class="layim-msg-status">new</span></li>
													</ul>
												</li>
												<li>
													<h5 layim-event="spread" lay-type="true"><i class="layui-icon"></i><span>我心中的女神</span><em>(<cite class="layim-count"> 2</cite>)</em></h5>
													<ul class="layui-layim-list  layui-show">
														<li layim-event="chat" data-type="friend" data-index="2" class="layim-friend76543 ">
															<div><img src="LayIM_files/48f122e6jw8fcmi072lkyj20e80e8t9i.jpg"></div><span>林心如</span>
															<p>我爱贤心</p><span class="layim-msg-status">new</span></li>
														<li layim-event="chat" data-type="friend" data-index="2" class="layim-friend4803920 ">
															<div><img src="LayIM_files/5033b6dbjw8etqysyifpkj20ku0kuwfw.jpg"></div><span>佟丽娅</span>
															<p>我也爱贤心吖吖啊</p><span class="layim-msg-status">new</span></li>
													</ul>
												</li>
											</ul>
										</div>
										<div class="layim-tab-content">

										</div>
									</div>
								
								</div>
							</div>
						</div>
					</div>
				</div>
			</div>
		</div>
	</body>

</html>
  • 至于laymi的依赖可以在layui官网找到,也可以点击laymi资源
    在这里插入图片描述
发布了4 篇原创文章 · 获赞 9 · 访问量 484

猜你喜欢

转载自blog.csdn.net/lmsfv/article/details/104960196