百度前端面试题-类似slack的在线聊天室
别人国庆出去玩,我在家写代码的感觉也是很不错哒。
首先介绍一下技术架构吧!
- 使用了js框架:FFF,zepto,jquery,md5.min.js
- 前端框架:Bootstrap
- 后端:野狗,部分PHP
github地址:https://github.com/knowThis/fex-stack.git
官网地址:http://chatroom.zhouxianbao.cn/
制作这个聊天室的时候考虑的第一个问题,是如何保证实时性。在我自己拥有的经验中保证这个实效性有两种方案,就是js的轮询,一个serverSocket。
javascript轮询
就是设置定时通过ajax向后端查询是否有更新内容,如果有就将内容反馈给前端。这样的话,简单实用,但是如果像我这样小规模小并发,完全没有必要考虑性能,但是综合考虑这样不能单纯处理并发靠机器的数量。
Js轮询的话,我想到的就是定时向后端数据库请求数据,检查是否有新的纪录。但是我想到问题,我现在的在线人数小,对后端的服务器也产生不了什么压力,如果是N个人,在一秒内产生的请求时N个,如果一个人开了N个窗口,那就是N*N个请求了,如果这样的N不断增大的,那这样的开销还是不小的。当然由于定时的特性,也不能很完美的展示时效性。
serversocket
这个就很牛逼,说出来吓死人,哈哈!长链接,可以保证时效性哦,弥补了http短板。WebSocket 规范定义了一种 API,可在网络浏览器和服务器之间建立“套接字”连接。简单地说:客户端和服务器之间存在持久的连接,而且双方都可以随时开始发送数据。详细看这里可能需要自己搭梯子http://www.html5rocks.com/zh/tutorials/websockets/basics/。Websocket 这个就是html5的一个的套接字技术,客户端和服务器之间存在持久的连接,而且双方都可以随时开始发送数据。然而它并没有在全部的浏览器中得到实施,也找到一个很好的插件socket.io。但是为了偷懒,使用野狗提供的数据存储和一套api。然后做后端支持。当然第一使用json来存储数据,在设计数据之间的关系遇到不小的挫折。
综合的话,使用web socket技术还是很不错的选择。所以后端使用了野狗咯省得自己去写后端。
来讲讲我是如何实现这个在线聊天室。
设计了四个模块,聊天内容,左部导航,头部导航,输入框。
在接下来做的过程中,使用requirejs和一号店 FFF框架,组件化开发这个东西,开发的还是蛮顺利,但是也遇到一个问题,在实例化对象的时候向后端请求中间遇到已经实例渲染页面,但是数据还没有到位的问题,我就简单粗暴的使用了setTimeout 等到数据加载完成,然后再实例。
账号之前一直是假数据,在建立账号体系的时候遇到了一个比较大的问题,就是token和密码的安全性,通常用md5加密,md5是单向的,相同的字符串产生的md5是相同的,那么也就是说字符串的拼接过程,是不能用给用户看到的,否则其他可以通过枚举来获取到密码。Js的代码对用户都是可见的,所以我就想到用php来对这个过程进行操作,再使用localstorge保存了这些token.token是用来提供一天的保持登陆的功能。
然后基于requierJS通过index.js分别实例化对象模块。首先我第一使用这种模式来开发程序,感觉比函数是还是很不错搭!

然后其他都模块开发了
就简单看一下聊天内容的对象

现在我们来看看这程序的页面吧!


目前这个聊天室,受限于野狗后端API,在很多功能上还不能做到实现。
通过做这个在线聊天室学习到很多,发现了一些现有的东西不能满足需求,所以准备去学习一下,底层的东西。非常想进FEX,我可以学的很快,做的更多。
百度前端面试题-类似slack的在线聊天室的更多相关文章
- 史上最全前端面试题(含答案)-A篇
HTML+CSS1.对WEB标准以及W3C的理解与认识标签闭合.标签小写.不乱嵌套.提高搜索机器人搜索几率.使用外 链css和js脚本.结构行为表现的分离.文件下载与页面速度更快.内容能被更多的用户所 ...
- 金三银四,磨砺锋芒;剑指大厂,扬帆起航(2020年最全大厂WEB前端面试题精选)上
金三银四,磨砺锋芒:剑指大厂,扬帆起航(2020年最全大厂WEB前端面试题精选)上 引言 元旦匆匆而过,2020年的春节又接踵而来,大家除了忙的提着裤子加班.年底冲冲冲外,还有着对于明年的迷茫和期待! ...
- 前端面试题2016--HTML
本文由我收集总结了一些前端面试题,初学者阅后也要用心钻研其中的原理,重要知识需要系统学习.透彻学习,形成自己的知识链.万不可投机取巧,临时抱佛脚只求面试侥幸混过关是错误的!也是不可能的!不可能的!不可 ...
- 前端面试题总结(二)CSS篇
前端面试题总结(二)CSS篇 一.link和@import的区别? link属于HTML标签,可以引入出css以外的事务,如RSS,而@import是css提供的,只能加载css文件. link会在页 ...
- Java前端面试题总结
Java前端面试题总结 简单说一下HTML,CSS,javaScript在网页开发中的定位? HTML:超文本标记语言,定义网页的结构 CSS:层叠样式表,用来美化页面 JavaScript:主要用来 ...
- 前端面试题 之 JavaScript
昨天我们一起分享了关于html和css的面试题<前端面试题之Html和CSS>,今天我们来分享关于javascript有关的面试题.我面试的时候最害怕面试官问我js了,因为我真心不擅长这个 ...
- 【web前端面试题整理02】前端面试题第二弹袭来,接招!
前言 今天本来准备先了解下node.js的,但是,看看我们一个小时前与一个小时后的差距: 既然如此,我们继续来搜集我们的前端面试题大业吧!!! 特别感谢玉面小肥鱼提供哟,@玉面小飞鱼 题目一览 Jav ...
- 各大互联网公司前端面试题(js)
对于巩固复习js更是大有裨益. 初级Javascript: 1.JavaScript是一门什么样的语言,它有哪些特点? 没有标准答案. 2.JavaScript的数据类型都有什么? 基本数据类型 ...
- 前端面试题(html篇)
前端面试题(html篇)
随机推荐
- hadoop MapReduce - 从作业、任务(task)、管理员角度调优
Hadoop为用户作业提供了多种可配置的参数,以允许用户根据作业特点调整这些参数值使作业运行效率达到最优. 一 应用程序编写规范 1.设置Combiner 对于一大批MapReduce ...
- intellij idea 12 搭建maven web项目 freemarker + spring mvc(续)
上次有2个东西没整明白,一个就是controller的注解使用RequestMappingHandlerAdapter报错 No adapter for handler [controller.Use ...
- Linux服务器建站基础-选择何种配置和安装环境项目
我们准备在搬瓦工笔记中,边整理和分享利用Linux VPS建站过程的同时,也会分享关于用户在选择和使用VPS服务器以及网站管理运营中的一些心得和建议.经常有很多网友在很多主机论坛.QQ群众问道,有没有 ...
- Spring第三天
Spring第三天 整体课程安排(3天+2天): 第一天:Spring框架入门.IoC控制反转的配置管理.Spring Web集成.Spring Junit集成. 第二天:Spring AOP面向切面 ...
- PHP验证码程序
[摘自网络,参考学习] <?php/** * vCode(m,n,x,y) m个数字 显示大小为n 边宽x 边高y * http://blog.qita.in * 自己改写记录session $ ...
- hdu_4742_Pinball Game 3D(cdq分治+树状数组)
题目链接:hdu_4742_Pinball Game 3D 题意: 给你n个点,让你求三维的LIS,并且求出有多少种组合能达到LIS. 题解: 求三维的LIS,典型的三维偏序问题,x排序,解决一维,c ...
- 2、为Eclipse绑定Tomcat
1.window→preferences打开属性窗口 2.点击add 3.点击Tomcat6.0 点击next 4.选择tomcat的解压目录和jdk,并点击finish 5.点击ok 6.打开ser ...
- java中的基本数据类型的转换
本文参考了如下两篇文章: https://my.oschina.net/joymufeng/blog/139952 http://www.cnblogs.com/lwbqqyumidi/p/37001 ...
- [ An Ac a Day ^_^ ] hrbust 2291 Help C5 分形
开博客这么久从来没写过自己学校oj的题解 今天写一篇吧 嘿嘿 原题链接:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProble ...
- jQuery控制表格行移动,序号不变
@model Gd.NetSign.Controllers.DTO.SysPamaterDTO @{ ViewBag.Title = "SysPamatList"; //Layou ...