build立一个完整的站点只使用websockets(通过socket.io和node.js,没有Ajax)?

这可能吗? 有没有人试过?

使用websockets意味着没有被交换的HTTP头(就像在Ajax请求中一样),所以页面显示的速度肯定会提高,但是即使在没有任何事情发生的情况下,sockets仍然与服务器保持连接,这是不利的用户数量增加?

在客户端和服务器之间存在连接的情况下,服务器是否仍然可以处理连接在同一端口上的其他客户端?

这绝对是可能的,但我没有尝试过。 你会得到一个延迟提升,但带宽提升将不会很大。 真正的问题不是服务器资源(通过AJAX连续轮询服务器在大多数情况下在服务器上可能更难),但是AJAX真的解决了很多问题(尤其是那些你将会遇到的问题增加),所以你会重build很多东西供自定义使用。

除非你真的遇到延迟问题,否则我会build议使用标准的AJAX。 或者只使用WebSockets作为实际需要低延迟的应用程序的一部分,这样就不会重新创build所有的轮子。

是的,能够让多个客户端同时连接到一个监听端口是可能的,并且一直可以完成(例如,您的Web服务器几乎可以在端口80上这样做)。 您的WebSocket服务器将不得不正确处理传入连接(连接,线程或多进程),但它几乎是标准的公平(谷歌“套接字编程YOUR_LANGUAGE”)。

build立一个完整的站点只使用websockets(通过socket.io和node.js,没有Ajax)? 这可能吗? 有没有人试过?

我没有听说过这样的事情,但是有很多网站使用Ajax密集。

使用websockets意味着没有被交换的HTTP头(就像在Ajax请求中一样),所以页面显示的速度肯定会提高,但是即使在没有任何事情发生的情况下,sockets仍然与服务器保持连接,这是不利的用户数量增加?

首先,并不是所有的浏览器都支持本地的websocket, 但实际上只有less数几个用户需要做一些长时间的合并或类似的工作。

在客户端和服务器之间存在连接的情况下,服务器是否仍然可以处理连接在同一端口上的其他客户端?

你在这里,但我想如果你使用的东西像Node.js,并没有成千上万的用户连接这不会是一个问题。

看看SocketStream: https : //github.com/socketstream/socketstream

SocketStream是一个新的Node.js Web框架,专门用于创build单页实时网站。

会有一些初始的资源加载,但WebSocket将被广泛用于Client < – > Server通信。

迟到的答案,但…

我最近推出了我的娱乐networking应用程序( jounce.space ),除了身份validation以外,它使用websocket进行一切操作。 WebSocket用于服务器推送的数据和客户端启动的事务。

该网站提供了几种不同的台球types的娱乐。 玩家用弹力带控制她的球,而不是一个提示棒,把鼠标连接到一个球上。 不像台球或台球,你不断地玩:你不要轮stream。

弹性带解决(或最小化)等待时间问题,因为玩家通过弹性带控制时自然会期望延迟。 服务器运行游戏模型,每隔40ms通过websocket发送更新的球位置和游戏事件。 每台客户端机器以当前的鼠标位置进行响应。

除了引导实时游戏数据之外,套接字还发送/接收玩家到达和离开,游戏结束和聊天。 数据是JSON格式的,例如每40ms发送给每个客户端:

{ "frameN": frame_sequence_num, "cpuLoad": frame_update_us/frameRate, "players":{ <playerId>:[posX, posY, MouseX, MouseY], . . . } } 

有时帧数据不按顺序到达,所以如果frame_sequence_num小于前一帧,那么帧数据将被忽略。 将所有玩家的鼠标位置发送给每个人,让每个人看到对方的弹性带。

Jounce.space是这个职位的生活。 访问和“查看源代码”更深入地了解客户端。 呃,警告,代码还不漂亮; 这是一个广告杂志的大杂烩,但它运作良好(MSIE除外)。 用golang编写的服务器位于openshift.redhat.com 。