- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 PHP Websockets 的初学者,我正在尝试使用数据库存储创建实时聊天。我做得很好,但现在我遇到了一个问题。有问题,当用户 1 向用户 2 发送消息并且用户 2 首先来到站点时(首先在 localhoste 上重新加载),它不会是“实时的”。
让我进一步解释一下。
这是我的 server.php .它与 Ratchet 教程几乎相同:
$loop = React\EventLoop\Factory::create();
$pusher = new \Pusher();
$context = new React\ZMQ\Context($loop);
$pull = $context->getSocket(ZMQ::SOCKET_PULL);
$pull->bind('tcp://127.0.0.1:5555'); // Binding to 127.0.0.1 means the only client that can connect is itself
$pull->on('message', array($pusher, 'onBlogEntry'));
$webSock = new React\Socket\Server($loop);
$webSock->listen(8080, '0.0.0.0'); // Binding to 0.0.0.0 means remotes can connect
$webServer = new Ratchet\Server\IoServer(
new Ratchet\Http\HttpServer(
new Ratchet\WebSocket\WsServer(
new Ratchet\Wamp\WampServer($pusher ))), $webSock);
$loop->run();
protected $subscribedTopics = array();
protected $myID = array();
public function onSubscribe(ConnectionInterface $conn, $data) {
$this->subscribedTopics[json_decode($data)->teamID] = $data;
$this->myID[json_decode($data)->userID] = $data;
}
public function onBlogEntry($entry) {
$entryData = json_decode($entry, true);
if ((!array_key_exists($entryData['team_id'], $this->subscribedTopics)) ||
(!array_key_exists($entryData['to_user_id'], $this->myID))
) {
return;
}
$teamID = $this->subscribedTopics[$entryData['team_id']];
$teamID->broadcast($entryData);
}
$this->chatPartner = $values['to_user_id']; //this I get from the form
$this->redrawControl('msg'); //here I redraw my layout
$this->messages_model->addMessage($values); //here I send data to database
$context = new \ZMQContext();
$socket = $context->getSocket(\ZMQ::SOCKET_PUSH, 'my pusher');
$socket->connect("tcp://localhost:5555");
$socket->send(json_encode($values));
var myJSON = '{'
+ '"teamID" : {$teamId},' //this I get from the presenter
+ '"userID" : {$userId}' //this I get from the presenter
+ '}';
var conn = new ab.Session('ws://localhost:8080',
function() {
conn.subscribe(myJSON, function(topic, data) {
if (data.from_user_id == mypartnerIdA) {
//here I edit the DOM
}
});
},
function() {
console.warn('WebSocket connection closed');
},
{'skipSubprotocolCheck': true}
);
最佳答案
您可能对最终订阅的数据有误解。
它旨在用于聊天 session 的 ID。
例如:
var chatId = 2; //this chat is only between users B and C
conn.subscribe( chatId , function(topic, data) {
...
}
关于使用 Ratchet Websockets 进行 PHP 实时聊天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36991507/
我需要一起实时收听 2 个网络套接字 URL。我创建了 2 个连接到不同 URL 的连接,但我只看到了第一条消息结果。如何在没有关闭第一次连接的情况下从 wss://exalpme2 获取消息? 我的
我正在尝试根据 YouTube 中的教程创建基本的 websocket 聊天,但在运行时我在终端中遇到了这个错误 php bin/server.php Fatal error: Interface '
我正在尝试在 Ratchet 中使用 sessionProvider,以下是我的 shell 脚本: namespace App\Console\Commands; use Ratchet\S
我正在尝试在我的系统上设置 Ratchet 并关注了 socketo.me 我已经做了一切,直到安装 ZMQ 和 React/Zmq 并且一切都成功了。 但是当我尝试运行时 push-server.p
我正在为我的应用程序使用 PHP Ratchet(推送集成),并具有实时出价功能,它的工作原理非常棒。 由于高流量,我们将我们的应用程序移到 AWS 平台上,我们有多个应用程序服务器实例,其中一个(R
我正在使用 Ratchet 为群聊启用推送通知。 我决定做以下事情: 每当用户连接时,为他订阅他参与的所有群组主题以及个人消息主题。 我有一个数组 protected $subscribedTopic
我只是在学习 Ratchet(用于 PHP 实时聊天应用程序的库)。根据文档,以下函数将收到两件事: 消息来自谁和 信息。 然而,它错过了发送给谁。此功能将消息发送给所有连接的人。但我也想实现一对一聊
我使用 Ratchet php 创建了一个网络套接字连接。我连接了一个客户端,然后执行了一个查询(执行查询大约需要 20 秒),同时我尝试连接另一个客户端,我看到网络套接字连接处于挂起状态(仍在尝试切
我正在开发一个具有聊天功能的网站,当用户收到新消息时需要即时通知。我正在尝试决定是使用 Ratchet 服务器还是使用 AJAX 实现长轮询系统。我目前已经实现了一个基本的 Pub/Sub Ratch
我正在尝试使 Ratchet 推送教程起作用。 http://socketo.me/docs/push 我正在按照教程所说的做,但我的订阅者不会收到任何消息。 我的服务器.php getSocket(
我开始使用 PhP Ratchet 套接字。按照指南,我可以制作一个简单的聊天应用程序,它可以在同一台计算机上运行。例如,如果我打开chrome和firefox,我可以交互发送和接收消息,ok。 问题
我是尝试实现 Ratchet 的编程初学者。 这是我当前的文件结构 D:\Xampp composer.phar htdocs Ratchet composer.
在 documentation , 他们有: Item 2 问:这只是打字错误,还是他们出于某种原因将 table-view-cell 放入了两次? 最佳答案 前几天我注意到了同样的事情并打算调查..
我是网络套接字编程的新手。我正在 codeigniter 中实现 web socket 以实现简单的聊天功能,我的配置看起来像这样 $config['ratchet_client'] = array
最近一直在学习如何使用 Ratchet 在 PHP 中实现 websockets,但我不知道如何让它与按钮点击一起工作。 这是我当前的 JS/jQuery 代码: jQuery(documen
我有一个托管在 AZURE 平台上的 Ubuntu 服务器。 SSH 的 IP 是 52.XX.XX.XX,如果我这样做了 ifconfig 表明 eth0 Link encap:Ethernet
我目前正在为 UI 使用 Ratchet 框架,并且想知道如何在页面之间共享信息(例如用户输入的数据)。该网站似乎没有涵盖这一点,我似乎无法找到任何类型的教程。 最佳答案 您最好的选择是使用 HTML
我已经使用 Ratchet 集成了 pusher。向所有用户广播工作正常。 现在我试图找到一种方法,当我连接到特定用户时如何向特定用户发送消息。 在 subscribe 上执行的方法: public
在客户端: var ws = new WebSocket('ws://localhost:8082/chat?id=123&tid=7'); 在服务器端 class MyApp implements
我使用 Ratchet 作为一些基于浏览器的游戏的套接字服务器,我注意到一个非常奇怪的行为。 我的应用程序类实现了 WampServerInterface,我注意到在 4-5 个客户端连接和断开连接(
我是一名优秀的程序员,十分优秀!