百度前端面试题-类似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篇)
随机推荐
- SpringMVC通过注解获得参数
SpringMVC可以通过RequestParam注解来映射获得参数,具体用法如下: 例子: 配置过程省略 1.新建controller类 package com.loger.controller; ...
- [CSS备忘]多行文本省略号
overflow : hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 4; -webkit-box ...
- [JS思路]运动框架思路
匀速运动的思路一: 1.先清除动画,再加载动画 2.方向dir有正值和负值,可以通过 目标值 > 当前值 往右移动,即正数 目标值 < 当前值 往右移动,即负数 来进行判断:dir = ...
- 《JS权威指南学习总结--8.6 函数闭包》
内容要点: 和其他大多数现代编程一样,JS也采用词法作用域,也就是说,函数的执行依赖于变量作用域,这个作用域是在函数定义时决定的,而不是函数调用时决定的. 为了实现这种词法作用域,JS函数对象的内部状 ...
- NSURLConnection基本使用
一.NSURLConnection的常用类 (1)NSURL:请求地址 (2)NSURLRequest:封装一个请求,保存发给服务器的全部数据,包括一个NSURL对象,请求方法.请求头.请求体.... ...
- wamp配置sendmail发送邮件
下载 sendmail ( 地址: http://www.glob.com.au/sendmail/sendmail.zip ) [PHP.ini 配置] [mail function]; For W ...
- Tomcat基础
一.Tomcat体系结构 tomcat应该是java程序员最熟悉的servlet容器了,作为一个用java实现的web应用程序服务器,下图是tomcat的体系结构 一个常见的Tomcat配置文件以下x ...
- yii框架中关于控制器中filter过滤器和外部action的使用
在yii框架中,控制器的过滤器分为执行前和执行后,这里举例是在执行控制器前的过滤. 需要在components/文件夹下定义公共的TestAction.php文件,并且实现run()方法.这个acti ...
- SecureCRT - 使用方法和技巧
1. 保活防掉线选项 -> 会话选项 -> 终端勾选 自动重新连接, 发送协议 NO-OP 每60秒 2. 拷贝与粘贴的设置选项 -> Global options -> Te ...
- Neutron网络性能测试与分析(一) CVR
测试环境:网络节点运行在Intel(R) Xeon(R) CPU E5-2630 v3服务器上,网卡使用intel的万兆卡82599ES 测试仪使用本人基于dpdk编写的程序,基本上可以打满万兆卡,小 ...