问题标签 [websocket]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
8890 浏览

html - HTML 5 Websockets 将取代 Comet?

看起来 HTML 5 中的 Websockets 将成为服务器推送的新标准。

这是否意味着名为 Comet 的服务器推送黑客将被淘汰?

当 Websockets 很快(1-2 年)将在所有主要浏览器中可用时,我是否有理由学习如何实现 Comet?

然后我可以使用BeaconpushPusher代替,对吗?

0 投票
2 回答
1033 浏览

http - Web 套接字使用大量资源,例如彗星长轮询?

我知道 Comet 长轮询对 Web 服务器不利,因为它们每个连接占用一个线程。因此,您不能有很多具有持久连接的用户,否则您的 Web 服务器将崩溃。

这与 HTML 5 中的 Web 套接字相同吗?

如果每个持久连接也占用一个线程,这如何解决资源问题?

0 投票
1 回答
1275 浏览

javascript - 使用 node.JS 和 Socket.IO 的路径和其他问题

我在 Windows 托管的 TurnkeyLinux 上的 VirtualBox 中使用 node.JS。我按照这里的说明进行操作。node.JS 位于 /root/node 中。虽然我可以成功运行简单的示例,但我很难弄清楚某些事情,因为我通常不是 Linux 人。我想使用socket.io。

  1. 我使用 git 管理安装 node.JS 本身,并使用 Express 和 Socket.IO 进行了尝试。(例如 git clone git://github.com/LearnBoost/Socket.IO.git)。它似乎有效,但我在任何地方都找不到那个东西!调用 git 时位于 /root/node 中,期待 lib 文件夹中的更改...

  2. node.JS 使用的是 CommonJS 模块系统。在 Socket.IO 示例io = require('../')中用于导入 Socket.IO,这对我来说看起来很奇怪。网络上的其他示例指的是“./Socket.IO-node”。由于模块只是遵循某些规则的 JS 文件,因此我希望像这样的文件的路径,因为我在 /root/node/lib 中找到了 http.js。顺便看看 server.js 示例:是否有某种原因将 var 用于 http,而不用于其余变量(url、fs、io、sys)?

  3. 在客户端,“如何使用”Socket.IO 的第一行是:io.setPath(...). 页面上的其他任何地方都没有提到 setPath。它应该指向哪里,相对于什么?

  4. 我没有找到有关使用 shell 停止/重新启动节点的信息。可能它是如此明显,以至于它从未在任何地方提及;)

感谢您的帮助。

0 投票
6 回答
9088 浏览

node.js - Node.js Websockets Socket.IO

我无法触发客户端事件,请参阅代码/说明:

好的,所以我得到了这个工作(我想)

客户端代码:

服务器端代码:

当我在 Chrome 中刷新页面时,我可以看到在 Shell 中写入的日志。

这是我看到的:

现在唯一的问题是让这些 javascript 套接字警报触发。

此外,此错误显示在 Chrome 中:

关于如何修复“坏标题”的任何想法?

谢谢,丹

0 投票
2 回答
853 浏览

javascript - Node.js Web 套接字服务器:我的数据管理想法是否稳定/可扩展?

我正在开发一个 html5 浏览器多人 RPG,node.js 在后端运行,并带有用于客户端数据传输的 Web 套接字插件。我面临的问题是访问和更新用户数据,正如您可以想象的那样,即使连接的用户很少,这个过程也会每秒发生多次。

我进行了一些搜索,发现只有 2 个支持 MySQL 功能的 node.js 插件,但它们都处于早期开发阶段,我发现查询数据库以获取用户所做的每一个小动作效率不高。

我的想法是让 node.js 在用户连接并检索与该用户相关的所有信息时使用 PHP 访问数据库。然后收集的信息将存储在 node.js 中的 JavaScript 对象中。这将发生在所有玩游戏的用户身上。然后将更新应用于对象。当用户注销时,存储在对象中的数据将更新到数据库并从对象中删除。

需要注意的一点是,我会将不同类型的数据分成不同的对象,这样更常访问的数据不会与会减慢查找速度的数据混合在一起。从理论上讲,如果这个项目获得了很多用户,出于显而易见的原因,我会设置一个上限,即一次可以有多少用户登录到单个服务器。

我想知道这是否是个好主意。拥有大对象会大大降低 node.js 服务器的速度吗?如果您碰巧对我的情况的其他可能解决方案有任何想法,我欢迎他们。

谢谢

0 投票
4 回答
23090 浏览

php - HTML5 Websocket 仅适用于本地主机

我遵循了以下网站的 HTML5 Websocket 教程:

http://net.tutsplus.com/tutorials/javascript-ajax/start-using-html5-websockets-today/

它运行良好,然后我在客户端页面中将主机值从“localhost:8080”更改为“218.175.192.160:8080”(我的 ip),服务器端仍然保留“localhost:8080”。

事实证明,我可以使用 http 协议在浏览器(apache)中查看页面,例如“ http://218.175.192.160:8080/client.html ”,但是,客户端的套接字无法连接到“ws ://218.175.192.160:8080/daemon.php”。(编辑错字)

我的问题是: 1. 在客户端,为什么 websocket 只适用于“ws://localhost:8080/daemon.php”,而不是“ws://218.175.192.160:8080/daemon.php”?

2. 为什么socket_bind( $socket, "127.0.0.1", 8080 ) 有效,而socket_bind( $socket, "218.175.192.160", 8080 ) 出现错误?系统提示“无法绑定地址[0]:请求的地址在其上下文中无效”。我确定 IP 地址属于我的服务器。

请帮忙,谢谢。

查到了错误原因:绑定错误地址,因为我用了路由器,虽然我在路由器上设置了NAT服务,但是我忘记了“218.175.192.160”的地址是属于路由器接口的,不是我的服务器机器。

服务器机器的地址应该是本地地址类型,例如:“192.168.1.2”,实际上是在网卡接口上。

对不起,我忘记了基本的网络设置:(,希望这篇文章能帮助像我这样的网络新手,谢谢~ :)

0 投票
3 回答
14376 浏览

node.js - 最小 Websocket Nodejs 尾部示例

我正在尝试使用 websocket 创建到浏览器的数据流。数据是日志文件的输出。(tail -f filename) 使用节点 js,我设法登录到标准输出,但我无法创建服务器并创建客户端 (js/html) 代码来创建 websocket 并接收所有输出这个子进程。谁能帮我?

NODE.JS SERVER OUTPUTTING TAIL TO STDOUT(见http://snippets.dzone.com/posts/show/12067

我的目标是尽可能实现最简单的流。为此,任何其他简单的解决方案都很受欢迎。谢谢。

0 投票
5 回答
4555 浏览

java - GWT 对 HTML5 的支持

GWT 是否支持 HTML5?我的意思是特别是 Canvas 和 WebSockets?

问候

0 投票
2 回答
1533 浏览

javascript - 在 google chrome 扩展程序中打开 Socket.IO 连接

我试图弄清楚每次用户从谷歌浏览器扩展访问新页面时如何打开与外部 Socket.IO 服务器的连接。这是我的第一次扩展,所以有点难。

我尝试使用 iframe 和 history.onVisit 事件,但到目前为止没有运气。

0 投票
1 回答
266 浏览

php - pusherapp 库

我正在使用 pusherapp 服务,它允许我轻松设置 websocket 应用程序。

http://pusherapp.com/

但是,要做到这一点,我需要一些服务器端代码来与他们的服务交互。

http://pusherapp.com/docs/libraries

我想知道是否有任何理由选择一个语言/库而不是另一个。我现在正在使用 PHP,我可以轻松地切换到 node.js 或 GAE。

谢谢。