当服务端对这个昵称进行合法性检测,通过时触发:
socket.on( 'loginSuccess', function(){
//1. 隐藏登录层//2. 用户可以愉快和别人聊天了~
});
如果用户输入的昵称不合法,则触发:
socket.on( 'loginFailed', function(){
//1. 提示用户昵称哪里出问题了//2. 等待用户重新输入
});
注意这里的事件名称,如 login、loginSuccess、loginFailed 都是自定义的,只要保证和服务端的一致就 ok 了 。
发送消息
想像一下用户发送消息这个动作,分解一下:输入文本 -> 点击发送 。也就是这俩了,ok,这里需要给发送按钮挂上一个事件,告诉服务端,“服务端服务端,这里是 socket XXX,我给你发了一个消息哦,注意查收,over 。”
socket.emit( 'msgSend',msg);
携带一个参数,即用户的输入 。
接受消息
接受消息这个逻辑有三种情况
自己发送的消息
别人发送的消息
系统的提示信息
莫慌,一个一个来看 。
自己发送的消息
自己发送的消息直接显示在聊天消息的面板,接收自己发送的消息不用和后台交互,只需要告诉后台我给大家发了这条消息即可 。当然啦,你也可以仿照微信对自己发送的消息进行处理:发送的瞬间将自己的消息添加聊天面板 -> 给旁边放个小菊花或者loading的字样 -> 与后台进行交互 -> 成功则隐藏小菊花;失败则将小菊花变成红色感叹号暗示用户发送失败 。
别人发送的消息
现在就需要在前端建立一个响应服务端“有新消息”的监听事件了 。
socket.on( 'newMsg', function(nickname, msg){
//显示这条新消息
});
回调函数里面有两个参数,nickname 和 msg,分别是消息发送者的昵称和消息内容,这俩是怎么来的呢?不要急,后面会在服务端逻辑里面讲到,这里你只需要知道,在前端接受新消息的时候,因为牵扯到展示新消息,所以需要这两个参数 。
系统的提示信息
关于系统的提示信息,主要分为两个:
提示新加入和退出的用户
展示当前在线的用户数
大概是这个样子,所以需要在前端对系统事件进行监听
socket.on( 'system', function(nickname, count, type){
//1.根据系统事件类型(新加入或离开)来提示用户//2.修改在线用户数量
});
这里的三个参数也都是必不可少的,nickname 代表触发系统事件的用户的昵称,count 表示当前在线的用户数量,type表示事件类型(加入/离开) 。同样,这三个参数也都是服务端传过来的 。
后台逻辑
与前端对应,后台的逻辑主要分为以下几个部分
起服务
建立连接
用户登录
接受用户发送的消息并广播之
系统消息的处理
varapp = express();
varserver = require( 'http').createServer(app);
vario = require( 'socket.io')(server);app.use( '/',express.static(__dirname + "/www"));server.listen( 8080);
因为我把前端文件(html/js/css)放到了 www 这个文件夹内,所以用 express 指定返回给浏览器的页面路径现在这样 。
当然,除了 express 以外,也要引入 socket.io 模块并绑定到服务器 。
建立连接
服务起好了,怎么建立连接呢?
io.on( 'connection', function(socket){
//do something
});
就…这样…?
昂 。
你没有看错,我也没有写错,这里对应前端逻辑的:
varsocket = io.connect();socket.on( 'connect', function(){
//do something
});
连接建立了以后,所有关于 socket 活动的逻辑就可以开始写了 。(FYI:当然,是写在这个 connection 事件的回调里面)
- 中医心理学与西方心理学差别在哪里 华夏心理咨询培训机构怎么样
- 三叉穴在哪里 董氏奇穴治疗带状疱疹
- 想吃正宗阳澄湖大闸蟹去哪里买比较好 阳澄湖大闸蟹在哪里买
- 京东自营蜂蜜是真的吗 蜂蜜在哪里能买到真的
- 汗蒸东西十条附近哪里有汗蒸和桑拿 我家附近的汗蒸房在哪里
- 怎么知道一个女生敏感还是不敏感 女人敏感区在哪里图解
- 比较有名的肿瘤医院在哪里 全国看肿瘤最好的中医院
- N95口罩在哪里买
- 三门粉黛乱子草在哪里
- 巴拿马运河连接了什么海和什么海