一个美好的概念可以让策划无比幼稚和疯狂,

比如 H5 改变世界呀,小程序替代 APP 呀,现在即时通信也被公司里的他们认为 so easy 了。

这很尴尬好吧,WebSocket(以下简称 ws) 的难点并不在于它本身好伐啦...

它对后端技术要求除了面对大型用户群,暂时没什么关系。

本质上它还是一个链接,只是以前用完就断了,ws 不断开,双方任意传输,这样有了即时通信。

看上去好像挺简单且非常好用的原理,那是对后端的链接技术而言啦,

真正实现 ws 应用还拥有以下难点的说:

1. 通信协议。

达成 ws 链接后,用户双方将使用的是另一套通信协议了。

类似于 http,一方先说我是谁我要进来了,另一方说好的你是合法的进来吧,然后才能进入并告诉对方我进来了,这样才算完成了初步的判断。

而 http 有近 600 种判断,虽然我们手写不用那么多,但何尝不是件头疼的事。

2. 游戏(应用)封装重写。

不是所有游戏都封装的很好(实在惭愧,主要开发时间不够,只能借鉴了),再 new 一个 person 就可以双人游戏了。

我们面对的更多的还是封装的极其不佳的源码,这就意味着我们得看完源码后再自己重新封装重写,也是项目中最耗时的部分。

3. 游戏事件接口化。

封装对技术含量的要求是非常非常高的,而我接触的游戏并不多,面向对象编程也还是个渣渣…

4. 通信方式。

个人总结的 ws 应用通信方式有四种:

a. 单人操控主机(一个发一个收),

b. 多人操控主机(多了判断各种状态),

c. 双人操控彼此(此时已没有主机概念,所有的通信都要判断),

d. 多人操控彼此(参见世面上的手游)。

以上实现难度从易到难排列。

5. 交互。

为了让客户得到更好的体验,所有通信都需要有反馈,存在各种提示,有的还需要界面设计,如人满/已结束等等。

另一方面则是,邀请其他人共同玩耍的形式,显示二维码还是转发等等

6. 与策划沟通问题。

其实策划并不能清楚认识到上述难点究竟难在哪,

所以这就和公司业务流程相关了,是策划主导需求技术来否决,还是先实现再策划等这种问题又老生常谈了

7. 开发时间。

我的观念一直都是,所有需求都能做,只是时间问题。

修电脑的可以做 CPU 吗,当然可以,但只给两周那就呵呵了,我有句 MMP 不知当讲不当讲。或者经历过两三次项目后再谈缩短周期的事吧。

最不理想的开发体验是,忙忙碌碌但第二天想不起前一天做过的事,无论是解决方案还是灵光一现都没能记录下来。

而相对宽松的时间,能让开发者有能多时间去思考,去权衡哪种方案更优,能清晰感受到代码从无到有的过程和魅力。

以上…

WebSocket 是个很大的领域,并不仅仅代表一个不断开的链接而已。

所以,各位加油吧。E-mail: 617754841@qq.com

WebSocket 的后记的更多相关文章

  1. WebSocket+Java 私聊、群聊实例

    前言 之前写毕业设计的时候就想加上聊天系统,当时已经用ajax长轮询实现了一个(还不懂什么是轮询机制的,猛戳这里:https://www.cnblogs.com/hoojo/p/longPolling ...

  2. Vue+WebSocket+ES6+Canvas 制作「你画我猜」小游戏

    Vue+WebSocket+ES6+Canvas 制作「你画我猜」小游戏 转载 来源:jrainlau 链接:https://segmentfault.com/a/1190000005804860 项 ...

  3. SpringBoot——定时任务+WebSocket(问题)

    开发环境:win7 + idea2018 + jdk 1.8 + springboot 2.x 记一次出现问题,我在项目中先集成了websocket环境,并且测试通过,之后想要模拟实时推送的效果,虽然 ...

  4. 基于SpringBoot+WebSocket搭建一个简单的多人聊天系统

    前言   今天闲来无事,就来了解一下WebSocket协议.来简单了解一下吧. WebSocket是什么   首先了解一下WebSocket是什么?WebSocket是一种在单个TCP连接上进行全双工 ...

  5. WebSocket数据加密——AES与RSA混合加密

    前言 之前在写“一套简单的web即时通讯”,写到第三版的时候没什么思路,正好微信公众号看到一篇讲API交互加密,于是就自己搞了一套AES与RSA混合加密,无意中产生应用在WebSocket想法,好在思 ...

  6. WebRTC + WebSocket 实现视频通话

    前言 WebRTC WebRTC(Web Real-Time Communication).Real-Time Communication,实时通讯. WebRTC能让web应用和站点之间选择性地分享 ...

  7. 漫扯:从polling到Websocket

    Http被设计成了一个单向的通信的协议,即客户端发起一个request,然后服务器回应一个response.这让服务器很为恼火:我特么才是老大,我居然不能给小弟发消息... 轮询 老大发火了,小弟们自 ...

  8. 细说WebSocket - Node篇

    在上一篇提高到了 web 通信的各种方式,包括 轮询.长连接 以及各种 HTML5 中提到的手段.本文将详细描述 WebSocket协议 在 web通讯 中的实现. 一.WebSocket 协议 1. ...

  9. java使用websocket,并且获取HttpSession,源码分析

    转载请在页首注明作者与出处 http://www.cnblogs.com/zhuxiaojie/p/6238826.html 一:本文使用范围 此文不仅仅局限于spring boot,普通的sprin ...

随机推荐

  1. node c++ addon注意事项

    The module_name needs to match the filename of the final binary (minus the .node suffix).

  2. Vue实现远程获取路由与页面刷新导致404错误的解决

    一.背景 先简单介绍一下现在项目情况:前后端分离,后端服务是Java写的,前端是Vue+ElementUI. 最近的一个需求是:通过后端Api去获取前端路由表,原因是每个登录角色对应的前端路由表可能是 ...

  3. windows cmd 命令

    dir 查看文件,参数:/Q显示文件及目录属系统哪个用户,/T:C显示文件创建时间,/T:A显示文件上次被访问时间,/T:W上次被修改时间 set 显示当前所有的环境变量 find 文件名 查找某文件 ...

  4. python各种库、框架的安装和卸载

    才疏学浅,努力深入,逐步更新,有问题敬请留言告知,谢谢. 关于python第三方库的安装最好少使用 easy_install,因为 easy_install 只能安装不能卸载,如果要卸载需要进入到 p ...

  5. jsx编译器 atom

    开始学习react es6 觉得没有合适的编译器.于是找到了个Atom. 官网 https://atom.io/ 下载安装. 双击运行即可完成安装. 安装后点击 file>setting> ...

  6. cocos2d-x:Layer::setPosition

    如果Node的实际类型是Layer或者其派生类, setPosition是不是有猫腻? std::string menuImage = "menu.png"; auto menuI ...

  7. 【BZOJ2186】[Sdoi2008]沙拉公主的困惑 线性筛素数

    [BZOJ2186][Sdoi2008]沙拉公主的困惑 Description 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M! ...

  8. FFF at Valentine(强连通分量缩点+拓扑排序)

    FFF at Valentine Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  9. Delphi线程的初级应用

    viewRadio_th线程函数在form外生命全局变量.函数内相应的局部变量可以接收全局变量的赋值进行操作.query等可以自行创建进行查询.这样结果不会改变. //下面是后台发送字幕的线程函数应用 ...

  10. 洛谷 P4171 [JSOI]满汉全席

    洛谷 最近刚刚学的2-sat,就刷了这道裸题. 2-sat问题一般是用tarjan求的,当出现(x,y)或(!x,y)或(x,!y)三种选择时,我们可以把!x->y,!y->x连边. 然后 ...