问题标签 [phpwebsocket]

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 投票
2 回答
2770 浏览

javascript - 每次在 db 表中插入记录时更新 CakePhp View

我正在制作一个应用程序,可以通过浏览器远程查看记录和报告。我已经使用 cakePHP 使应用程序及其工作正常,但我有一个小问题,因为应用程序不做任何插入它只是读取数据,我想要当用户打开视图并插入记录时表,它应该更新所有打开的客户端,而不是用户刷新页面来获取新记录。是否有实际工作的 cakePHP websocket 插件?我们的虚拟主机不允许安装程序或添加 apache 模块,因此 nodejs 或类似的解决方案在这里不适用。

我正在寻找一个纯粹的 php 和 javascript 实现,您只需将应用程序文件上传到网络服务器并运行一切。您不必在 apache 或其他东西上运行、安装附加功能或进行任何配置......上传文件后

这是我的一个控制器(BooksController.php)中的一个函数,用于将数据检索到视图中

这是我的一个视图(list_books.ctp),它在分页的表格中显示数据。

我可以在我的视图、控制器或模型上添加什么来使视图自动更新?这可以使用ajax来实现吗?

0 投票
1 回答
2874 浏览

php - PHP websocket 自动断开连接

我正在为我的项目使用 websocket 功能来发送消息。我正在使用从以下链接 https://github.com/Flynsarmy/PHPWebSocket-Chat下载的 PHP websocket 。但我的问题是我的网络套接字会自动断开一段时间,然后又会自动重新连接。因此,我的消息丢失了。所以有人可以告诉我如何解决这个问题。我可以对代码进行任何修改以克服这个问题。谢谢你。

以下是我的 server.php 文件

而javascript代码是

0 投票
2 回答
2578 浏览

php - 长轮询或 WebSockets

我正在编写网络聊天,您可以在其中同时与屏幕上的人进行多次一对一的对话。(基本上,就像个人信使一样,没有群聊)。

我的技术选项似乎是 Long Polling 和 WebSockets,我正在尝试选择。

长轮询的好处是它很容易实现,我可以返回我想要的任何数据(一个自定义的 JSON 对象,其中包含更新页面所需的数据)。

我对 WebSockets 的担心是 PHP 中没有原生库,所以你必须在不同的 3rd 方库之间购物,而且概念似乎更复杂,通道和订阅是什么,你有什么。

浏览器兼容性对我来说不是问题。

  1. Long Polling 的性能是否比 Websockets 差很多?如果没有,那么我的决定很容易!

  2. PHP 是否有一个非常简单的 Websocket 服务器?还是这个概念很简单,我可以自己写?(Mozilla 有一个关于编写客户端的非常简单的教程,但没有在服务器上)。

0 投票
1 回答
1216 浏览

php - 在 C:\wamp\www\bin\chat-server.php 中找不到类“MyChat\Chat”

我正在尝试从http://socketo.me/docs/hello-world实现基本的聊天应用程序,但是我不断收到此错误。我试图移动文件,但没有成功,但我很确定我没有将文件放在正确的位置。我对作曲家、websockets 和 psr-0 完全陌生,我还有很多关于 PHP 的知识要学习。这是我的路径树和来源:

聊天.php

聊天服务器.php

作曲家.json

我的 php.exe 在 C:\wamp\bin\php\php5.4.12 中。我真的很感谢你的建议,我真的不知道我在哪里弄错了。

0 投票
0 回答
590 浏览

php - PHP - WebSocket 设置特定的客户端 ID

我正在使用 PHP websockets。我熟悉它的基础知识,但我不知道如何为用户设置特定的 ID。现在,默认情况下,脚本根据用户连接的时间设置 1、2、3 等,但我希望它设置存储在会话中的 ID。我使用的脚本是这个。我找到了生成 ID 的函数。

有什么办法可以设置一个特定的吗?

0 投票
2 回答
5427 浏览

laravel - 使用 websockets 时的最佳实践?

我有一个用 Laravel 4 编写的 web 应用程序。这个应用程序使用 Ratchet,更具体地说,它使用Latchet包。作为旁注,我正在使用以下技术:

现在我得到了以下场景:

  • 我有一个幻灯片,它应该通过 websocket 接收更新。
  • 整个应用程序已设置好,我可以通过 ZeroMq 将新的代码更改从 PHP 发布到我的 websocket 客户端。
  • 在我的 routes.php 中,我有以下代码,以便正确注册主题:

    /li>
  • 然后,我启动棘轮服务器。

sudo php artisan latchet:listen

上传照片后,我可以运行以下代码将更新推送到正在收听我的主题的客户端(PhotoStream/client1在本例中):

这段代码一切正常,但它是在更新的情况下。我的问题如下:

我应该如何处理客户端的初始化?

  1. 我应该先用普通的旧 PHP 渲染页面,然后初始化我的 websocket 客户端,然后接收进一步的更新(如果有的话)?
  2. 或者,当我注册一个新的 websocket 客户端时,我应该在请求中提供一个额外的参数,以便服务器通过 websockets 向我发送完整的数据?

这两个选项中的后者对我来说似乎是最好的选择,但我真的不知道如何以一种好的方式实现它。

0 投票
1 回答
1841 浏览

amazon-ec2 - WebSockets 在 Amazon ec2 环境中不起作用

我借助此链接“ http://www.flynsarmy.com/2012/02/php-websocket-chat-application-2-0/ ”通过 websockets 制作了一个聊天应用程序。虽然它在我自己的开发服务器中运行良好,但是当我将它托管在我公司的亚马逊 ec2 服务器上时,它显示错误:“ Firefox 无法在 ws://external ip for amazon:port/ 上建立与服务器的连接"

我在尝试将客户端连接到服务器时使用服务器的外部 IP,在执行服务器文件时使用服务器的内部 IP 用于亚马逊。我还在我的 ec2 中放置了一个转发规则,使我的端口可以在 tcp 和 udp 中访问。

我还检查了我的亚马逊服务器的 ELB,我的服务器没有 ELB。

仍然无法正常工作。这是我的服务器文件代码的一部分,其中创建了套接字并连接了客户端。

我认为这个问题与 socket_select() 函数有关,该函数无法选择创建的套接字。如何让它发挥作用?请帮忙,因为即使经过多次尝试我也无法解决这个问题。

更新

我发现这个问题是由于亚马逊上的旧版 python 引起的。于是我把python版本改成了2.6/2.7

我还替换了 socket.io 库来运行我的聊天。它的工作非常顺利。

0 投票
1 回答
3863 浏览

php - 如何使用棘轮在线显示连接的用户?

你能告诉我如何使用棘轮在线显示连接的用户吗?我的意思是我想向服务器发送某种信息,userid并将这个 id 广播给所有其他连接的用户,表明它userid是在线的。

0 投票
1 回答
8102 浏览

javascript - 如何在codeigniter中使用websocket来更新内容而不刷新页面

我正在使用 php 框架 codeigniter。现在我想通过 websocket 更新记录,以便在不刷新页面的情况下更新信息。我可以使用 ajax , jquery 但我需要通过 websocket 来做到这一点。所以请任何人都可以帮助如何使用 websocket 完成此功能以及如何在 codeigniter 中使用它。

0 投票
2 回答
8424 浏览

javascript - 通过 MySQL 数据库更改发送 WebSocket 更新更有效

我目前正在尝试使用 WebSockets,以减少/消除在潜在的低带宽环境中对持续 AJAX 请求的需求。所有设备都与 WebSocket 兼容,所以那里没有问题,我试图将其保留为原生 PHP WebSocket,没有 node.js 或其他框架/库(到目前为止还不错)。

我要做的是决定如何通知连接的客户端有关另一个客户端对数据库的更新。有问题的用例是一个人在他们的设备上按下一个按钮,然后它会提醒该人的经理注意该按下。所以我有两个选择如下:

1.循环数据库查询(PHP)

我的第一个想法是在 WebSocket 服务器中插入一个查询,该查询实际上是在说“警报字段是否已更改?如果是,请通知经理”。虽然这是最直接和最明智的方法(我能想到),但设计一个旨在减少服务器压力的 PHP 脚本似乎很浪费,现在每秒运行一次查询,但是,至少这可以确保当检测到数据库更新时,将发送更新。

2. 发送来自客户端的通知

我的另一个想法是,当客户端更新数据库时,他们实际上可以自己发送 WebSocket 通知。这具有减少任何密集和循环查询的优点,但也意味着每次我想更改任何数据时都需要发送 WebSocket 消息,例如:

也许这是最好的选择,因为它是最有效的,但我担心在更新数据库和发送 WebSocket 通知之间连接可能会断开,这可能需要在 PHP 文件中进行回退检查,很像第一个解决方案中的那个,尽管间隔更长(比如每 30 秒)。

3. MySQL 触发器?

这纯粹是一种猜测,但也许另一种选择是创建一个 MySQL 触发器,它可以以某种方式直接通知 server.php 文件?我不知道这将如何工作,并且会冒险猜测这可能最终会产生与解决方案 #1 相同或相似的查询要求,但这只是一个...

预先感谢您的帮助 :)

编辑:解决方案的可能性 4

事实上,另一个想法刚刚出现在我的脑海中,用于更新数据库的 PHP 文件实际上可以在其中内置 WebSocket 消息。这样当PHP文件更新数据库时,通过PHP通知WebSocket服务器,这可能吗?