博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于 socket.io 实现实时你画我猜游戏
阅读量:5789 次
发布时间:2019-06-18

本文共 2391 字,大约阅读时间需要 7 分钟。

前言

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

演示地址

  • 实时画板+聊天室()

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

  • 图片抢先看

    clipboard.png

解释

关于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文件

 

进行交互

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已经存在则删除,防止出现重复id                this.remove(id);            // 找到按照v从大到小所对应的位置            var i = _tops.findIndex(x=>{return idmap[x].v
{ 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元素左右扩展15px    padding-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结构

col-6

col-4
col-2

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

感受

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

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

转载地址:http://huqyx.baihongyu.com/

你可能感兴趣的文章
Centos7.x:开机启动服务的配置和管理
查看>>
HTML5 浏览器返回按钮/手机返回按钮事件监听
查看>>
xss
查看>>
iOS:百度长语音识别具体的封装:识别、播放、进度刷新
查看>>
JS获取服务器时间并且计算距离当前指定时间差的函数
查看>>
华为硬件工程师笔试题
查看>>
jquery居中窗口-页面加载直接居中
查看>>
cd及目录快速切换
查看>>
Unity Shaders and Effects Cookbook (3-5) 金属软高光
查看>>
31-hadoop-hbase-mapreduce操作hbase
查看>>
C++ 代码风格准则:POD
查看>>
linux-友好显示文件大小
查看>>
【转】【WPF】WPF中MeasureOverride ArrangeOverride 的理解
查看>>
【转】二叉树的非递归遍历
查看>>
NYOJ283对称排序
查看>>
接连遇到大牛
查看>>
[Cocos2d-x For WP8]矩形碰撞检测
查看>>
自己写spring boot starter
查看>>
花钱删不完负面消息
查看>>
JBPM之JPdl小叙
查看>>