别人国庆出去玩,我在家写代码的感觉也是很不错哒。

首先介绍一下技术架构吧!

  • 使用了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的在线聊天室的更多相关文章

  1. 史上最全前端面试题(含答案)-A篇

    HTML+CSS1.对WEB标准以及W3C的理解与认识标签闭合.标签小写.不乱嵌套.提高搜索机器人搜索几率.使用外 链css和js脚本.结构行为表现的分离.文件下载与页面速度更快.内容能被更多的用户所 ...

  2. 金三银四,磨砺锋芒;剑指大厂,扬帆起航(2020年最全大厂WEB前端面试题精选)上

    金三银四,磨砺锋芒:剑指大厂,扬帆起航(2020年最全大厂WEB前端面试题精选)上 引言 元旦匆匆而过,2020年的春节又接踵而来,大家除了忙的提着裤子加班.年底冲冲冲外,还有着对于明年的迷茫和期待! ...

  3. 前端面试题2016--HTML

    本文由我收集总结了一些前端面试题,初学者阅后也要用心钻研其中的原理,重要知识需要系统学习.透彻学习,形成自己的知识链.万不可投机取巧,临时抱佛脚只求面试侥幸混过关是错误的!也是不可能的!不可能的!不可 ...

  4. 前端面试题总结(二)CSS篇

    前端面试题总结(二)CSS篇 一.link和@import的区别? link属于HTML标签,可以引入出css以外的事务,如RSS,而@import是css提供的,只能加载css文件. link会在页 ...

  5. Java前端面试题总结

    Java前端面试题总结 简单说一下HTML,CSS,javaScript在网页开发中的定位? HTML:超文本标记语言,定义网页的结构 CSS:层叠样式表,用来美化页面 JavaScript:主要用来 ...

  6. 前端面试题 之 JavaScript

    昨天我们一起分享了关于html和css的面试题<前端面试题之Html和CSS>,今天我们来分享关于javascript有关的面试题.我面试的时候最害怕面试官问我js了,因为我真心不擅长这个 ...

  7. 【web前端面试题整理02】前端面试题第二弹袭来,接招!

    前言 今天本来准备先了解下node.js的,但是,看看我们一个小时前与一个小时后的差距: 既然如此,我们继续来搜集我们的前端面试题大业吧!!! 特别感谢玉面小肥鱼提供哟,@玉面小飞鱼 题目一览 Jav ...

  8. 各大互联网公司前端面试题(js)

    对于巩固复习js更是大有裨益.    初级Javascript: 1.JavaScript是一门什么样的语言,它有哪些特点? 没有标准答案. 2.JavaScript的数据类型都有什么? 基本数据类型 ...

  9. 前端面试题(html篇)

    前端面试题(html篇)

随机推荐

  1. Maven+STS工程中Maven Dependencies 文件夹丢失问题

    在我们使用Maven+sts工程中偶尔会出现这种情况: Maven Dependencies文件夹在新打开的工程中丢失,造成 web project 自动编译出错,缺少必要的库文件: 如下图所示的情况 ...

  2. Apache .htaccess语法之RewriteRule

    [说明]定义重写的规则[语法]RewriteRule Pattern rewritePattern [flags] # 开启 rewrite 功能 Options +FollowSymlinks Re ...

  3. 神州数码品众_Android面试

    1.进程的定义,进程的调度: 2.线程的定义,多线程出错的描述: 3.数组和链表的定义和区别: 4.对链表的反序: 5.tree高度的计算: 6.设计一个存储系统,可以从客户端进行上传文件: 7.从长 ...

  4. Ubuntu彻底删除mysql

    删除 mysql sudo apt-get autoremove --purge mysql-server-5.0sudo apt-get remove mysql-serversudo apt-ge ...

  5. javascript表单操作

    通过遍历获得列表中被勾选的元素 $("#singcms-push").click(function(){ var id = $("#select-push"). ...

  6. hdu_5903_Square Distance(dp)

    题目链接:hdu_5903_Square Distance 题意: 给你一个长度为n的a串,一个数m,现在让你构造一个长度也为n的b串,使这个串是由两个相同的串拼起来的,并且和a串对应的位不同的数量为 ...

  7. jquery的跳转.禁止全url跳转.只需控制器+方法

    success:function(){ window.location.href="/enterprise/show"; } success:function(){ window. ...

  8. 一、链接Sql Server2014提示找不到实例的问题解决方案

    在登录数据库时,确认数据库地址.用户名.密码正确的情况下,却报如下错误,则说明目标数据库服务器有相应的服务未启动. 在目标数据库服务器中打开服务列表: 找到SQL Server(****)服务(括号中 ...

  9. 转 delphi SelText,GetText,SetText用法

    转自:http://blog.163.com/wll_009/blog/static/1173731172009102452632968/ 这几个都跟选区有关的,就是选中一串字符串,选中的会变蓝色Se ...

  10. Leetcode 074 Search a 2D Matrix

    Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...