第一篇已经介绍了一大半了,下面就是详细业务了,其实业务部分要注意的地方有几个,剩下的就是js跟html互动处理。
首先在强调一下,页面上不可缺少的js:jquery,singalR.js,hubs .
<script src="Scripts/jquery-1.10.2.min.js"></script> <script src="Scripts/jquery.signalR-2.1.2.min.js"></script> <script src="http://localhost:40716/push/im/hubs"></script>
//获取用户信息 function getUserIdAndName() { var user = { username: ‘‘, userphoto: ‘‘, userid: ‘‘ }; var userstr = local.get("currentUser"); if (!userstr) { //随机生成索引,对应头像 var index = getRandom(1); //当前用户名 user.username = username[index]; //默认用户头像 user.userphoto = ‘/photos/00‘ + index + ‘.jpg‘; //当前用户Id,用随机数法生成 user.userid = getRandom(7); var userstr = JSON.stringify(user); local.set("currentUser", userstr); } else { user = JSON.parse(userstr); } return user; }
//初始化聊天室固定写法 $.connection.hub.start({ jsonp: true }).done(function () { console.log("连接服务器成功"); //调用join方法,实现当前用户加入信息推送 proxy.server.join({ photo: user.userphoto, username: user.username }); }).fail(function () { console.log("聊天室初始化失败!"); });
public Task Join(ZjMessage message) { message.connectionId = Context.ConnectionId; //就是用户加入的时候 return Clients.All.receiveMessage(new { type = "join", msg = message }); }
public override async Task OnConnected() { try { //用户第一次进来,读取历史记录 var result = await query.GetListAsync(x => x.userid.Length > 0); Clients.Caller.receiveHistoryMessage(new { type = "system", msg = "您已经进入聊天室", oldlist = result.ToList() }); } catch (TimeoutException ex) { } }
上述的运行效果如图:
代码会在下期贴出来,下期预告:发送聊天信息和开发注意事项,聊天室总结以及代码下载。
ASP.NET SingalR + MongoDB 实现简单聊天室(二):实现用户信息、聊天室初始化,聊天信息展示完善
原文:http://www.cnblogs.com/panzi/p/4980543.html