我几乎阅读了我在WebSockets上找到的每一本指南和教程,但没有一本介绍如何有效地使用它们。
有人有什么指南可以指导你怎么做吗?我担心单个连接可能占用的带宽,尤其是当应用程序打开了大量连接时。
WebSocket的效率取决于处理它们的Web服务器的实现和体系结构。与每个Ajax请求中发送的所有不同的HTTP头字段和HTTP cookie相比,WebSocket是一个非常高效的协议,只有2字节(!)的开销。
通常,用于WebSocket的高效Web服务器应该是事件驱动的(请参阅下面的示例)。相反,实现web服务器的传统方式是为每个请求生成一个新线程。但是线程分配了很多内存,例如每个线程256MB。因此,如果你的服务器上有1GB的内存,你就不能同时处理很多请求。但是,如果您的服务器是事件驱动的,那么您的内存使用率将几乎是恒定的,因为不会创建新的线程。另请参阅从技术上讲,为什么Erlang中的进程比OS线程更高效?
您可以在WebSockets中发送任何数据。如果客户端是web浏览器,或者可能是类型化数组,那么JSON是有效的。如果您的客户端是自定义应用程序,则可以使用协议缓冲区。另请参阅Google Wave客户端服务器协议白皮书
您可以使用Twisted(Python)或Netty(Java)实现高效的websocket服务器。Play Framework是一个在Netty上实现的Java和Scala的高效web框架。另一个有效的替代方案是Yaws web服务器(Erlang)或Node.js+Socket.io(JavaScript)。
作为一名应用程序开发人员,发送的数据越少,服务器上的效率就越高(流量就越少),负载也就越小。