草庐IT

my_socket

全部标签

mysql - 在聊天室中两次显示发件人消息 socket.io+redis+mysql+laravel

我正在使用sokcet.io开发一个实时聊天应用程序,laravel框架下的redis使用MySQL数据库连接来保存用户的帽子消息。所以我开发了这个应用程序,但我遇到了一个麻烦。我的问题是。当我向聊天室发送消息时。该消息在我的(发件人窗口)中显示两次(数据库消息和Redis事件消息)。我尝试了几种方法来解决这个问题,但我仍然找不到合适的解决方案。如果你能帮我解决这个问题,那对我来说是非常有值(value)的帮助。下面我发布我的编码部分(redis事件+socket连接+message.html+redisController)谢谢。Redis事件:classRedisEventimpl

node.js - 在 Socket.io 中处理服务器故障

我正在使用socketio的配置,redis作为缓存,rabbitMQ用于pubsub和mongoDB作为聊天应用程序的二级存储。基本上,redis用作商店来设置连接的用户状态为在线或离线、用户对话ID、参与者和更多数据点。在我的用例中,可能有多个用户使用相同的用户ID但有多个套接字连接,因此我在用户身上保留一个计数器作为Redis上的哈希值,并在每次用户使用相同的ID连接时递增它。在socket.on('断开连接')事件我正在编写递减计数器逻辑,如果与同一用户ID连接的套接字数量为4,则将其设置为3,如果为1,则将其设置为0,并且将用户设置为离线。问题是,如果我的服务器停止,则不会触

php - Laravel 5.7 - 广播 - socket.io - redis : Nothing happen on client

几天后,我阅读了有关如何在本地计算机上设置laravel-echo的信息。我设法能够使用redis和socket.io运行laravel-echo-server。问题是事件被触发了,但是客户端没有任何反应。我知道事件已触发,因为它已登录到我的horizo​​n.log文件中。Horizonstartedsuccessfully.[2018-08-2918:35:30][31]Processing:App\Events\NewModel[2018-08-2918:35:31][31]Processed:App\Events\NewModel然后,在我的echo.log文件中,我可以看到用

java - 在 Redis 中存储 Web Socket session

我在tomcat中部署了一个WebSocket服务器端点,如下所示:@ServerEndpoint(value="/alerts/{username}/{sessionId}/{token}",decoders=AlertDTODecoder.class,encoders=AlertDTOEncoder.class)publicclassAlertWebSocketEndpoint{@OnOpenpublicvoidonOpen(Sessionsession,@PathParam("username")Stringusername,@PathParam("sessionId")Stri

node.js - 使用 Redis Pub/Sub 的 Socket IO 服务器集群

首先,我构建了一个微服务来获取FootballAPI,并通过redis的pub/sub系统,如果有任何实时比分变化,它会发布任何变化。现在我的服务器,带有套接字和路由,将处于集群模式。我已经用socketio-redis设置好了。这是此设置的一个片段:constio=require('socket.io')();constsRedis=require('socket.io-redis');constadapter=sRedis({host:'localhost',port:6379});const{promisify}=require('util');constRedis=requir

php - PHP使用Redis存储Session需要多少个socket?

假设我使用Redis在PHP中存储我的session(以前我使用mySql5.0),并且Redis服务器与PHP应用程序服务器位于不同的服务器中。因此,当有请求进入时,session将从Redis创建/加载,它将从PHP应用服务器获取一个套接字。如果有100个并发请求,Redis会有100个套接字吗?还是只有一个? 最佳答案 Redis没有任何内置连接池,我认为当前的PHPRedis绑定(bind)不提供类似的功能,因此默认情况下每个PHP线程都会打开一个套接字/连接。因此,如果您的Web服务器(Apache/Nginx/IIS)尝

session - 由于 session 存储,很可能无法在本地扩展 socket.io

我有一个主进程,它派生了socket.io服务器所有使用集群模块的worker,当然还有socket.io。问题是,除非我特别说明我只需要一名worker,否则我的代码将无法正常工作。我在集群模块存在之前就写了它,它作为单个进程运行良好,现在看来也一样。当它使用RedisStore作为session存储fork4个worker(cpu核心数)时会发生什么:node_redis:nocallbacktosenderror:Error:ERRwrongnumberofargumentsfor'hset'commandCaughtexception:Error:Error:ERRwrongn

javascript - 避免 Redis 持久化(Socket.io + Cluster + RedisStore)

我知道你可以使用Redisforthecommunicationbetweensocket.iosocketsfromdifferentclusterworkers在node.js中,也用于在这些工作人员之间共享其他对象。但我正在努力解决以下问题:Redis数据的持久化是否妨碍了这一点?当主进程关闭时,我如何确定套接字数据已从redis中删除?我怎样才能确保对象相同?我只需要这些数据,直到进程/套接字终止。也许我必须删除保存到磁盘的时间间隔并在主启动时重新加载整个Redis服务器?非常感谢。 最佳答案 您可以使用FLUSHDB从当前

node.js - 是否可以看到与 socket.io 捆绑在一起的 redis 模块内部

因为我们可以将socket.io配置为使用redis来实现它的内部工作方式,如下所示:varRedisStore=require('socket.io/lib/stores/redis'),redis=require('socket.io/node_modules/redis'),pub=redis.createClient(),sub=redis.createClient(),client=redis.createClient();io.set('store',newRedisStore({redisPub:pub,redisSub:sub,redisClient:client}))

python - 等待 gevent socket 和 redis 阻塞 blpop

我正在使用geventStreamServer来处理来自客户端的传入连接。客户端连接后,客户端会向服务器端发送一些消息,服务器端会进行处理。这边一切正常。但有时服务器也会将消息发送回特定的客户端。我会用redis来做这个。我创建了一个以特定客户端ID作为键的队列。客户端发送消息后,我检查队列,如果有任何消息,我将其发送回客户端。这种方法的缺点是,服务器只能在客户端发送消息后发送消息。有没有办法既等待传入数据又等待redisblpop,这样我就可以在消息准备好后立即将消息发送回客户端,而不是等到客户端发送下一个数据?importgeventfromgeventimportsocketfr