chatofpomelo简析之二——聊天
发布时间:2020-12-14 19:22:11 所属栏目:百科 来源:网络整理
导读:上一篇 ChatofPomelo简析之一——用户登录 分析客户端登陆的过程。当用户登陆成功后,聊天又是个什么过程呢?下面就来分析聊天时,客户端与服务器端的交互过程。 客户端 我们先来看看下,聊天发送消息的过程。当用户在文本框内输入文字,并回车就可以发送消
客户端1: $("#entry").keypress(function (e) { 2:var route = "chat.chatHandler.send"; 3:var target = $("#usersList").val(); 4:if (e.keyCode != 13 /* Return */) return; 5:var msg = $("#entry").attr("value").replace("n",""); 6:if (!util.isBlank(msg)) { 7: pomelo.request(route,{//route = "chat.chatHandler.send" 8: rid: rid,
9: content: msg,
10: from: username,monospace; overflow:auto; width:702px; border-style:none"> 11: target: target 12: },255)">function (data) {
13: $("value",128)">""); // clear the entry field. 14:if (target != '*' && target != username) { 15: addMessage(username,target,msg);
16: $("#chatHistory").show(); 17: }
18: });
19: }
20: });
1: handler.send = function(msg,session,next) {
var rid = session.get('rid');
var username = session.uid.split('*')[0];
var channelService = this.app.get('channelService'); var param = { 6: route: 'onChat',96)"> 7: msg: msg.content,96)"> 8: from: username,96)"> 9: target: msg.target
10: }; 11: channel = channelService.getChannel(rid,255)">false); 12: 13://the target is all users
if(msg.target == '*') {
15: channel.pushMessage(param); 16: } 17://the target is specific user
18:else {
19:var tuid = msg.target + '*' + rid; 20:var tsid = channel.getMember(tuid)['sid']; 21: channelService.pushMessageByUids(param,[{
22: uid: tuid,monospace; overflow:auto; width:702px; border-style:none"> 23: sid: tsid 24: }]);
25: }
26: next(null,{ 27: route: msg.route
28: });
29: };
1: channel = channelService.getChannel(rid,false);
1: app.configure('production|development',255); font-size:14px">function () {
2:// route configures
3: app.route('chat',routeUtil.chat);//routes的chat属性对应routeUtil.chat()方法 4: app.filter(pomelo.timeout());
5: });
1: exp.chat = function(session,msg,app,cb) {
2: 3: console.log("uid = " + session.uid + " rid = " + session.get("rid")); 4:var chatServers = app.getServersByType('chat');//根据类型 获取服务器列表 5: 6:if(!chatServers || chatServers.length === 0) {//如果服务器列表不存在或为空,则调用回调函数cb,将错误传给该回调 7: cb(new Error('can not find chat servers.')); 8:return; 9: }
10: 11:var res = dispatcher.dispatch(session.get('rid'),chatServers);//通过rid获得具体的chat服务器 12: console.log("chat服务器:" + res.id); 13: cb(null,res.id); 14: };
1: app.route(是怎么分配chat-server,是随机分配,还是自增分配?
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |