问题标签 [socket.io-1.0]

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 投票
1 回答
590 浏览

node.js - Socket.io、Codeigniter、Redis 会话存储来创建推送通知

我有一个要为其实现推送通知的 codeigniter 应用程序。我使用 mysql 作为后端数据库,但我使用 redis 作为会话存储,所以我可以将它与节点一起使用(只是偏好)。当用户连接到节点时,他们通过查询参数传递会话 ID

在服务器上我得到它是这样的:

我能够从 redis 中获取用户数据以保存已连接用户的列表。

我想用他们的 profile_id 和 socket.id 将已连接用户的列表保存在一个数组中

所以我可以通过 id 搜索用户并获取他们的套接字连接 id 并出于任何原因向该用户发送通知。

我的问题是我可以在授权事件中发送 sessionId 但无法获取 socket.id,我可以在连接事件中获取 socket.id 但无法在该事件中传递数据。

如何发送会话 id 并在连接到 socket.io 服务器时获取 socket.id?

先谢谢了 :)

0 投票
2 回答
8046 浏览

php - 通过 PHP 连接到 socket.io(nodejs)

我需要通过 php 连接到 websocket,发送数据并立即断开连接。无需等待套接字的响应。我使用了 elefant.io但更新库后不起作用。请告诉我如何通过 PHP 连接到 websocket?

0 投票
2 回答
1769 浏览

socket.io - 向客户端连接的所有房间发送消息

我正在使用 socket.io 版本 1,但遇到以下问题。

我有一个应用程序,用户可以在其中连接到不同的房间。在断开连接事件时,我希望此用户通知他离开了他连接的房间。(我知道在断开连接时用户会自动离开所有房间,但我想通知其他人用户离开了他们。)

我查看了这个列表,并没有找到一种简单的方法来做我想做的事。可能有更好的方法来做到这一点,但目前我的解决方案是找到所有房间并循环发送给每个房间的所有人。但是 io.sockets.manager和适配器都不能给我一个客户端连接到的房间列表。

PS看到一个错误的答案,我想澄清一下。我知道如何向房间里的人发送消息。我想解决另一个问题。如果用户输入Room1Room2...,然后断开连接,我想向这些房间RoomN中的所有人发送消息。N

0 投票
1 回答
54 浏览

cookies - 在 Socket.io 中获取特定 cookie 的值

我在我的应用程序中使用 socket.io 进行实时消息交换(大部分应用程序不是用节点编写的)。我正在寻找一种使用 Socket.io 获取特定 cookie 值的方法。

到目前为止,我最接近的是使用:client.request.headers.cookie它返回一个字符串: io=Ntp0MJVr3J_ifTKjAAAA; my_sess=c08mk6g0u66ifrjm6madt7535mknb7ur; other=fk1sq140hgj6gmp1vdcimkto71

我对所有这些值都不感兴趣,只需要 my_sess。当然,我可以拆分和解析字符串。这并不难,最直接的方法是:

但在这样做之前,我宁愿问是否有本地方法可以给我 cookie 值。

0 投票
0 回答
450 浏览

python - Python连接并向socket.io 1.0发送消息?

目前使用的是最新版本的socket.io. 我想知道如何通过 python 连接到命名空间套接字(websocket例如使用模块)。

我的主要目标是向服务器发送消息。只是。有谁知道我怎么能做到这一点?

SocketIO-client在 Pypi 上看到了这个包,但它似乎只适用于 Python 2.7,而我使用的是 3.3.4。

我尝试了这篇文章中所说的内容并将其改编为我的 python 版本。虽然这就是我在我的hskey对象中得到的:

0 投票
1 回答
4330 浏览

javascript - Socket.IO 是否是大量用户的可靠聊天服务器,如果是,您的堆栈是什么?

这些天我一直在阅读许多关于 Socket.IO 的博客,并且对它的特性印象深刻。我打算将它用作聊天应用程序之一,并且对于具有最少用户数量的普通用户来说,它运行良好。但是在生产网络中使用时,Socket.IO 有什么陷阱吗?Socket.IO 是否最适合消息流非常庞大的大型消息传递系统。如果是,那么与 Socket.IO 一起使用的最佳技术堆栈是什么,以使其“即使在负载更多时也能 100% 可靠”工作。任何人都已经有使用 Socket.IO 实现大规模消息传递系统的经验。我想使用的堆栈是 Socket.IO、Redis、Cassandra 和 MySQL。

到目前为止,我已经浏览了许多 Socket.IO 的示例,并且许多人试图以不同的方式进行操作。有些人使用 Array 来存储 Socket id,而有些人使用 Redis。我知道使用 Redis 肯定会有所帮助。但我不想止步于此。我想学习 Socket.IO 应用程序的最佳架构。

请建议我一条通往它的道路。

编辑

对我来说,最好的堆栈不过是与其他堆栈相比失败率更低的堆栈。

0 投票
1 回答
2228 浏览

node.js - 在防火墙后面如何使用 Socket.io 1.0 处理粘性会话?

我正在尝试使用 Nginx、Node.js 和 Socket.io 1.0 在 Rackspace 上使用集群为自己设置 POC。我假设我需要使用集群,因为如果需要,我希望它可以跨多个服务器进行扩展。我希望每个节点都有自己的实例,到目前为止,我看不出每个实例都需要出于任何原因相互交谈。同样,到目前为止,我相信我需要使用集群,因为我可能有许多客户端连接到该服务器,并且我希望它能够相应地增长和缩小。我的最终目标是构建一个类似于此处所示的 POC:https ://cloud.google.com/developers/articles/real-time-gaming-with-node-js-websocket-on-gcp

我刚刚得到了我认为已建立的新 Socket.io 1.0 的有效设置,但是当从路由器后面的不同设备连接时,它们都在我的日志记录中显示相同的 PID,我认为这是由于所需的粘性- Socket.io 的会话。我不确定这是否与我们过去通过集群获得的工作进程相同,但我仍然试图让我的头脑围绕这一切。

首先我想知道是否需要使用集群和粘性会话,因为对于相同的外部 IP 只发布了 1 个 PID,是否有将每台计算机视为自己的实例?我不想发回更新该 IP 背后的每个人的响应。

我的第二个问题是这个,这可能是一个愚蠢的问题,但我还是在问:) 在阅读有关如何使粘性会话工作的信息时,我一直看到人们说“使用粘性会话,例如通过 IP 地址”。“喜欢”这个词吸引了我。我似乎发现有人提到使用带有 IP 和 cookie 的粘性会话。你可以通过其他任何东西来做到这一点,例如用户名、颁发的令牌或其他任何东西吗?我担心的是,如果有人在移动设备上玩这个并且他们切换了塔,塔会发布一个新的 IP,因此反过来会发布一个新的 PID,并且基本上玩家游戏会失败。我理解对了吗?

请原谅我,因为我是 Node.js 的新手,但我认为这是学习 node.js 和云中集群的一种很酷的方式。任何人都可以提供的任何信息或方向都会有很大帮助。许多 tuts 似乎都向所有人广播事件,但我正在寻找一个可扩展的解决方案,其中每个连接都可以在大多数时间单独发送事件。当服务器与他们通信时,我还需要解决同一防火墙后面的许多人被视为单独连接的问题。同样,如果您觉得有任何阅读或教程可以帮助我了解 socket.io 1.0 以及我正在尝试做的事情,请回复。谢谢!

0 投票
1 回答
286 浏览

node.js - 带有 mocha 测试的 socket.io,应该断言不抛出错误

我的测试

为了便于阅读,我删除了一些代码。

我发消息helloclient1

和client2监听chat_to_user事件。

上面这个测试很好,测试通过了。

改变我的测试,它应该抛出错误(但不是)

但是当我更改 client2 代码时:

当我运行测试时,它应该会抛出一个错误,并告诉我错误原因,如下所示:

但它没有抛出错误原因,它只是抛出一个超时错误:

那么,如何使用 Socket.io 测试抛出错误原因?

我正在使用 socket.io 1.0

0 投票
1 回答
1340 浏览

javascript - 模块化 node.js/socket.io/express 应用程序的最佳方法

我正在使用 Node.JS 创建一个使用 Express 和 Socket.io 的应用程序。随着时间的推移,处理一个文件变得越来越困难,我正在将某些我知道如何但想知道如何做到这一点的最佳方法移出。

我有一个类似于以下的私有区域构造函数:

privateArea.js

我希望它也可以访问socket.io已设置为在单独sockets.js文件中使用的变量,该文件可以通过主app.js文件和单独文件包含express.js

所以我希望结构如下:

任何帮助/示例将不胜感激。

谢谢

0 投票
0 回答
416 浏览

websocket - C中的socket.io库

我已经查看了一些选项,例如玻璃纸,但发现示例应用程序崩溃了。此外,它不仅仅实现 socket.io 协议,因为它使用 json 和 curl。我正在寻找的是一个简单的 C 库(不是 c++,所以没有 boost),它使用 socket.io 协议对数据进行编码和解码,因此它可以与任何其他进行网络 i/o 的库一起使用。目的是实现一个用 C 语言开发的用于 linux 的本机客户端,以与 node.js 服务器通信。

感谢任何有帮助的库/解决方案。此外,任何有关 socket.io 协议的文档都会有所帮助,这样我就可以看看实现它。

谢谢。