我需要一点帮助。我正在进行测试以了解如何构建实时网络,因此我将node.js与socket.io结合使用。一切都很有趣,但如果我尝试在channel中发布一些消息,该channel正在监听Node,而来源不是Node或javascript,它就会崩溃。服务器端:(发送外部发布时失败的Node)varapp=require('express')();varhttp=require('http').Server(app);varpub=require('redis').createClient(6379,'localhost',{detect_buffers:true,return_buf
我在我的本地环境中设置了一个工作Node服务器和Redis服务器,并且能够成功地将socket.io与Laravel结合使用。但是当我试图将更改推送到生产服务器时,我意识到socket.io无法正常工作。当我在GoogleChrome控制台中输入以下命令调试socket.io时,它说它已建立连接,但它始终无法接收数据。localStorage.debug="socket.io-client:socket"我知道这是redis服务器的问题,因为一个,它说它已连接到套接字。第二,如果我在事件类中写了die和dump,它就成功地死了。namespaceApp\Events;classMyEv
大家好,我正在尝试根据socket.io-redis实现socket.io-redis模块文档。当从一个客户端向同一服务器上的另一个客户端广播消息时,它工作正常。但是当我运行两个相同的服务器,一个在端口80上,一个在端口81上,并尝试在客户端A(连接到端口80)和客户端B(连接到端口81)之间广播消息时,没有消息通过。这是我的代码:constclient=require('redis').createClient()constio=require('socket.io')(server)constredis=require('socket.io-redis')io.adapter(re
我有两台托管socket.io的服务器,两个应用程序之间的通信由redis管理。当用户1单击按钮时,在redis的服务器端,我将输入为Room:A->User1当用户2单击按钮时,他收到房间忙消息,因为用户1的redis中已经有条目当用户2按下按钮时,我将从redis中删除该条目,以便其他用户轮流发言。但是当有100个用户正在执行操作时,它不是实时工作的问题。关于如何管理socket.io中的按钮有什么想法吗? 最佳答案 我找到了通过锁定管理按钮的方法。同样使用以下Redis库:https://github.com/mike-mar
我目前在尝试创建涉及socket.io、redis和express交互的单元测试时遇到问题。我正在寻找有关如何最好地模拟这些交互的策略。例如,我正在使用socket.io-client来模拟socket.io到我的快速服务器的连接/行为,但是当我添加一个测试来检查redis是否存储来自socket.io的正确信息时,我发现自己需要还在redis单元测试中模拟socket.io,这反过来意味着我需要模拟express服务器。这导致我似乎正在重写另一个服务器只是为了对我正在尝试测试的实际服务器进行单元测试。有没有人必须这样做?如果是的话,你能给我指点资源吗(google/stackover
我已经处理这个问题好几个小时了,但我想不通。所以我使用的是Laravel5.5而我的PHP版本是7。现在我的项目已经完成,但我想添加用户之间的实时通信。我试图测试一些东西,但它就是行不通。我的本地开发环境在MAC上,我正在使用LaravelValet为我的网站提供服务。我遵循了本教程:Tutorial首先我安装了Redis&Socket.io如下$composerrequirepredis/predis$npminstallexpressioredissocket.io--save然后我用brew安装了redisserver然后启动了redis-server--port3001现在我创
我正在使用sokcet.io开发一个实时聊天应用程序,laravel框架下的redis使用MySQL数据库连接来保存用户的帽子消息。所以我开发了这个应用程序,但我遇到了一个麻烦。我的问题是。当我向聊天室发送消息时。该消息在我的(发件人窗口)中显示两次(数据库消息和Redis事件消息)。我尝试了几种方法来解决这个问题,但我仍然找不到合适的解决方案。如果你能帮我解决这个问题,那对我来说是非常有值(value)的帮助。下面我发布我的编码部分(redis事件+socket连接+message.html+redisController)谢谢。Redis事件:classRedisEventimpl
我正在使用socketio的配置,redis作为缓存,rabbitMQ用于pubsub和mongoDB作为聊天应用程序的二级存储。基本上,redis用作商店来设置连接的用户状态为在线或离线、用户对话ID、参与者和更多数据点。在我的用例中,可能有多个用户使用相同的用户ID但有多个套接字连接,因此我在用户身上保留一个计数器作为Redis上的哈希值,并在每次用户使用相同的ID连接时递增它。在socket.on('断开连接')事件我正在编写递减计数器逻辑,如果与同一用户ID连接的套接字数量为4,则将其设置为3,如果为1,则将其设置为0,并且将用户设置为离线。问题是,如果我的服务器停止,则不会触
几天后,我阅读了有关如何在本地计算机上设置laravel-echo的信息。我设法能够使用redis和socket.io运行laravel-echo-server。问题是事件被触发了,但是客户端没有任何反应。我知道事件已触发,因为它已登录到我的horizon.log文件中。Horizonstartedsuccessfully.[2018-08-2918:35:30][31]Processing:App\Events\NewModel[2018-08-2918:35:31][31]Processed:App\Events\NewModel然后,在我的echo.log文件中,我可以看到用
我尝试制作实时应用程序。当用户点击“赞”按钮时,“赞”计数器会更新。现在这只适用于当前用户。但是另一个用户看不到点赞数发生了变化(例如,如果它是通过另一个浏览器连接的)。点击赞按钮后,我在终端服务器消息中看到:Messagereceived:{"event":"App\\Events\\PostLiked","data":{"result":1,"socket":null},"socket":null}但在当前浏览器上,点赞计数器仅针对一个用户进行更新。我制作了两个Vue组件:1.点赞按钮(点赞帖子)-LikePost.vue2.点赞计数器标签(显示点赞数)-LikePostCount