什么是Websocket
Websocket 是HTML5开始推出的一种新的协议,实现了浏览器与服务端的全双工通信,在使用WebSocket时,,只要和服务端做一个握手(handshaking)动作,浏览器首先要向服务端发起一个特殊的HTTP请求,其头部附加了信息Upgrade: WebSocket,表明这是一个申请协议升级的HTTP请求,服务端解析出来这些信息后,产生一个应答给客户端,这样双方的WebSocket连接就建立起来了,即可形成一条全双工的数据通道,两者之间可以进行互相通信,直到客户端和服务端中的某一方主动关闭连接。
在WebSocket出现之前,为了解决浏览器和服务端之间的实时推送问题,采取了很多解决方案,通常使用
继续阅读 »
最近工作需要,对 WebSocket 进行了一点研究,今天在这里给大家分享一下我对 WebSocket 协议、WebSocket 的 Go 语言实现,以及 socket.io 服务端库的 Go 语言实现的理解。
WebSocket 简介
继续阅读 »
前言
最近学习 SignalR ,做了小总结
《通过 实现耗时任务实时通知》 。SignalR 本身融合利用了 Web 通信的好几种方式,其中之一用到了 WebSocket 。
继续阅读 »
Action Cable 有什么用
Action Cable 是一项满足客户端与服务器端实时通讯需求的功能,它基于 WebSocket 协议。在此之前 web 端要满足类似的需求,有 轮询、长轮询、SSE(Server Sent Events ,sinatra 自带一个简单的实现,有兴趣可以看看) 等方法,综合考虑开销和兼容性,基于 WebSocket 的实现是最好的。
继续阅读 »
一次rabbitmq没用好的资源泄露
最近重写的一个使用rabbitmq做borker的服务, 一个go-lang的小服务,支持多节点,很简单就是从mq获得msg, 如果有通过websocket连接上来的client, 那么就push给它。
继续阅读 »
技术流水账一篇,记录踩过的坑
Channels 异构
Django Channels 官方文档宣称 channels 的最佳配置是使用其自带的服务器组件 Daphne,但在开发中我发现 daphne 处理普通请求比在 WSGI 架构下慢了好几倍,更何况使用 daphne 派发静态文件是十分不切实际的。于是我将 http.request 和 websocket.* 两个 channel 解耦,前者使用 nginx 配合 uwsgi 处理,后者使用 nginx 反向代理至 daphne 处理。这样一来便可充分利用两种架构的优势。
旧架构:
新架构:
more
环境
Ubuntu Server 16.04(与开发环境相
继续阅读 »