前言

一直都想好好的学习运用node,一直都不知道要做什么东西,最近Java Web老师要求做个前端的应用,既然是前端应用,那肯定得是单页应用了,而且node很适用于高并发的实时应用,所以便选择node以及基于nodesocket.io

演示地址

  • 实时画板+聊天室(GitHub)

  • 你画我猜+聊天室(Demo | GitHub)

  • 图片抢先看

解释

关于Socket.IO

Socket.IO 是基于node实现的套接字前端后端数据交互的库,通过它的封装,使用者可以很方便的开发,而且支持websocket/ajax 长轮询等方法,兼容低版本浏览器。

基本使用如下:

服务器端

var httpd = require('http').createServer(handler);
var io = require('socket.io').listen(httpd);
function handler(req,res) {}
io.sockets.on('connection',function(socket){//新的客户端连接socket.on('login',(name,age)=>{socket.emit('message',name+','+age);//触发客户端message事件})
});

客户端

引入js文件

<script src="socket.io/socket.io.js'></script>

进行交互

var socket = io.connect();      //触发服务器端connection事件
socket.emit('login','moyu',20); //触发服务器端login事件
socket.on('message',function(msg){alert(msg);
})

关于排行榜

利用了js的匿名立即执行函数进行模块化包装

var tops = (function () {/** _tops : 存放所有id,按照回答正确数倒序排列* idmap : 一个hash map结构,key为id,value为名字与回答正确数* n : 前n个,在toJSON调用*/var _tops = [],idmap={},n=10;return {set : function (id,name,v) {if(this.isExists(id))//如果id已经存在则删除,防止出现重复idthis.remove(id);// 找到按照v从大到小所对应的位置var i = _tops.findIndex(x=>{return idmap[x].v<v;});i= i===-1 ? _tops.length : i;// id在i+1位置插入至_tops_tops.splice(i,0,id);idmap[id] = {name:name,v:v};},isExists : function (id) {return idmap[id]!=null;},remove : function (id) {var i = _tops.indexOf(id);if(i!==-1) {_tops.splice(i, 1);delete idmap[id];return true;}return false;},get:function (id) {return idmap[id];},toJSON:function () {// JSON.stringify方法会隐式调用该方法        var arr = [];_tops.every((x,i)=>{if(i>=n) return false;arr.push({id:x,v:idmap[x].v,name:idmap[x].name});return true;});return arr;}}
}());

关于Bootstrap栅格

.container{margin-right: auto;margin-left: auto;//防止最外层的.row元素左右扩展15pxpadding-left: 15px;padding-right: 15px;
}.col-3{width: 30%;
}
.col-4{width: 40%;
}
.col-9{width: 90%;
}/.../.row{/* 向外左右延伸15px */margin-right: -15px;margin-left: -15px;
}
/* 防止子元素为float,父元素的高度为0 */
.row:before,
.row:after {content: " ";display: table;
}
.row:after {clear: both;
}.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9{padding-left: 15px;padding-right: 15px;float:left;
}

HTML结构

<main class='container'><div class='row'><div class='col-8'><div class='row'><div class='col-6'><p>col-6</p></div><div class='col-4'><div>col-4</div></div></div></div><div class='col-2'><div>col-2</div></div></div>
</main>

关于一栏(多栏)宽度固定,一栏自适应

  • 圣杯布局

  • 双飞翼

感受

...做单页应用真的需要挺大的心脏,而且需要较好的整体的架构,好在socket.io对websocket封装的不错,变成了面向消息的方式,代码结构相对更加清晰了些。

...不敢想象用Java做这种实时单页应用后端会有多么的「拗口」。最后推荐一个实时的更加优秀的游戏:slithe。

基于 socket.io 实现实时你画我猜游戏相关推荐

  1. 基于socket.io的实时在线选座系统

    基于socket.io的实时在线选座系统(demo) 前言 前段时间公司做一个关于剧院的项目,遇到了这样一种情况. 在高并发多用户同时选座的情况下,假设A用户进入选座页面,正在选择座位,此时还没有提交 ...

  2. 在线白板,基于socket.io的多人在线协作工具

    为什么80%的码农都做不了架构师?>>>    首发:个人博客,更新&纠错&回复 是昨天这篇博文留的尾巴,socket.io库的使用练习,成品地址在这里. 代码已经上 ...

  3. 基于socket.io的web聊天室

    基于socket.io的web聊天室 一. 项目介绍 该项目使用node.js作为后端服务器框架,并利用socket.io来实现web聊天室功能.socket.io是由 JavaScript 实现的基 ...

  4. ios视频通话三方_iOS基于Socket.io即时通讯IM实现,WebRTC实现视频通话

    Socket.io-FLSocketIM-iOS 基于Socket.io iOS即时通讯客户端 iOS IM Client based on Socket.io 实现功能 文本发送 图片发送(从相册选 ...

  5. postgres+socket.io+nodejs实时地图应用实践

    2019独角兽企业重金招聘Python工程师标准>>> nodejs一直以异步io著称,其语言特性尤其擅长于在realtime应用中,如聊天室等.在进行实时应用开发时,必不可少的需要 ...

  6. socket.io php 聊天室,WebSocket学习(一)——基于socket.io实现简单多人聊天室

    前言 什么是Websocket呢? 我们都知道在Http协议中,客户端与服务器端的通信是靠客户端发起请求,然后服务器端收到请求再进行回应,这个过程中,客户端是主动的,服务器端是被动的.Websocke ...

  7. 基于socket.io的php扩展介绍---phpsocket.io

    工具地址:https://github.com/walkor/phpsocket.io phpsocket.io是由workerman根据socket.IO扩展的用于php服务端通讯组件,后台服务用w ...

  8. 【开源】使用C++实现的实时、可选房间、多人同房的你画我猜

    一个C++编写的,使用C/S架构的.实时.可选房间.多人同房的你画我猜游戏 该项目使用MFC进行开发,采用C/S架构,仿照传统你画我猜的游戏玩法制作.本系统中数据通过MySQL数据库存储,用户端不直接 ...

  9. 【websocket】socket.io 例子:chat服务

    基于socket.io快速实现一个实时通讯应用 看起来是一篇超牛的文章. Socket.IO Chat A simple chat demo for Socket.IO How to use $ np ...

最新文章

  1. 如何避免jquery库和其它库的冲突
  2. .Net思想篇:为何我们需要思想大洗礼?
  3. 2020牛客多校第1场I-1 or 2一般图最大匹配带花树
  4. MicroK8s及KubeFlow安装文档
  5. window10本地解析域名
  6. mysql timestamp 当前_技术分享 | MySQL 复制那点事 - Seconds_behind_Master 参数调查笔记
  7. azure 安全组_具有安全性和设计注意事项的Azure成本跟踪
  8. 《YOLO系列原理实战笔记》高清.pdf
  9. 【51单片机】往返流水灯代码
  10. iommu intel-iommu实现
  11. 凯恩帝数控系统面板介绍_凯恩帝数控车床操作面板按钮详解
  12. 使用Python、pandas、pyecharts进行数据分析——实例讲解
  13. 百度推广的优势和劣势
  14. Vitis指南 | Xilinx Vitis 系列(一)
  15. 计算机主机频率单位,计算机常见计量单位解析
  16. RGB 和 CMYK 相互转换
  17. 智能设计|零基础,低成本,轻松实现设计效率翻倍
  18. ads1258_ADS1258 pdf,ADS1258中文资料,ADS1258应用电路-华秋商城
  19. 第七届蓝桥杯有奖竞猜 JAVA
  20. CSS实现水平垂直的几种方法

热门文章

  1. idea 快速导入实现父类方法_三步快速提高物理成绩!准初三生暑假实现逆袭的实用方法...
  2. python大盘点:全局变量、局部变量、类变量、实例变量
  3. hive jdbc连接时的乱码问题
  4. MyBatis中Like语句使用方式
  5. Informix数据库安装配置
  6. 无法启动 nexus 服务,错误1067:进程意外终止。java环境变量设置技巧。
  7. 修改Android Studio默认的gradle配置文件
  8. zabbix分布式监控环境搭建
  9. Jarvis Oj Pwn 学习笔记-level4
  10. Python Day10 MySQL 01