WebSocket 的后记
一个美好的概念可以让策划无比幼稚和疯狂,
比如 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 的后记的更多相关文章
- WebSocket+Java 私聊、群聊实例
前言 之前写毕业设计的时候就想加上聊天系统,当时已经用ajax长轮询实现了一个(还不懂什么是轮询机制的,猛戳这里:https://www.cnblogs.com/hoojo/p/longPolling ...
- Vue+WebSocket+ES6+Canvas 制作「你画我猜」小游戏
Vue+WebSocket+ES6+Canvas 制作「你画我猜」小游戏 转载 来源:jrainlau 链接:https://segmentfault.com/a/1190000005804860 项 ...
- SpringBoot——定时任务+WebSocket(问题)
开发环境:win7 + idea2018 + jdk 1.8 + springboot 2.x 记一次出现问题,我在项目中先集成了websocket环境,并且测试通过,之后想要模拟实时推送的效果,虽然 ...
- 基于SpringBoot+WebSocket搭建一个简单的多人聊天系统
前言 今天闲来无事,就来了解一下WebSocket协议.来简单了解一下吧. WebSocket是什么 首先了解一下WebSocket是什么?WebSocket是一种在单个TCP连接上进行全双工 ...
- WebSocket数据加密——AES与RSA混合加密
前言 之前在写“一套简单的web即时通讯”,写到第三版的时候没什么思路,正好微信公众号看到一篇讲API交互加密,于是就自己搞了一套AES与RSA混合加密,无意中产生应用在WebSocket想法,好在思 ...
- WebRTC + WebSocket 实现视频通话
前言 WebRTC WebRTC(Web Real-Time Communication).Real-Time Communication,实时通讯. WebRTC能让web应用和站点之间选择性地分享 ...
- 漫扯:从polling到Websocket
Http被设计成了一个单向的通信的协议,即客户端发起一个request,然后服务器回应一个response.这让服务器很为恼火:我特么才是老大,我居然不能给小弟发消息... 轮询 老大发火了,小弟们自 ...
- 细说WebSocket - Node篇
在上一篇提高到了 web 通信的各种方式,包括 轮询.长连接 以及各种 HTML5 中提到的手段.本文将详细描述 WebSocket协议 在 web通讯 中的实现. 一.WebSocket 协议 1. ...
- java使用websocket,并且获取HttpSession,源码分析
转载请在页首注明作者与出处 http://www.cnblogs.com/zhuxiaojie/p/6238826.html 一:本文使用范围 此文不仅仅局限于spring boot,普通的sprin ...
随机推荐
- 深入理解yum工作原理
前言 在前面一篇rpm包制作描述了rpm的打包过程,这篇文章主要讲述yum的工作原理. yum 运行原理 yum的工作需要两部分来合作,一部分是yum服务器,还有就是client的yum工具.下面分别 ...
- 目前国际上所用云计算平台IaaS、PaaS、SaaS简介
随着云计算这个概念越来越为人所熟知,企业对云计算的重视程度也在日趋加深.这不仅是一种潮流,更体现了一种需求——数字化.现代化.科技化的整体需求.如今市场上云计算的运营商更是风起云涌,服务种类更是丰富繁 ...
- phpcms v9 配置sphinx全文索引教程
英文介绍:http://www.sphinxsearch.com/docs/manual-0.9.9.html 一.首先需要在服务器上安装sphinx 在Windows上安装sphinx 1. ...
- 在CentOS中安装输入法
1.需要root权限,所以要用root登录 ,或su root 2.yum install "@Chinese Support" 3.exit 4.回到桌面,system-> ...
- Unity3d 创建线程 子线程与主线程通信
创建子线程 一,不带参数 Thread resourcesLoadThread=new Thread (this.resourceLoadTxt); resourcesLoadThread.Sta ...
- Android无线测试之—UiAutomator UiSelector API介绍之一
一. UiSelector类介绍: 1) UiSelector类说明: UiSelector代表一种搜索条件,可以在当前界面上查询和获取特定元素的句柄,当找到多余一个的匹配元素,则返回布局层次结构上第 ...
- 最详细的PHP flush()与ob
buffer ---- flush()buffer是一个内存地址空间,Linux系统默认大小一般为4096(1kb),即一个内存页.主要用于存储速度不同步的设备或者优先级不同的 设备之间传办理数据的区 ...
- iOS学习笔记(十)——iOS真机调试
前面一直使用模拟器运行,今天使用了真机调试,这一篇介绍一下真机调试.真机调试需要99$注册,如果有注册过的账号,也可以使用注册账号邀请你加入一个账号下,注册账号可以给你分配权限,我也是使用的邀请成为开 ...
- Kotlin——中级篇(一):类(class)详解
在任何一门面向对象编程的语言里,类(class)是非常基础.但也是非常重要的一项组成,通俗的说就是万般皆对象,而所说的对象就是我们生成的类.Kotlin也是如此,下面详细为大家介绍Kotlin中的类的 ...
- E QUERY [main] SyntaxError: identifier starts immediately after numeric literal mongodb mapReduce 异常分析 集合命名规范
异常信息 repl_test:PRIMARY> db.0917order_totals_b.find()2018-09-28T15:13:03.992+0800 E QUERY [main] S ...