有没有办法同时访问网络服务器脚本?

问题描述 投票:-3回答:2

我在我的覆盆子pi上用php设置了一个apache2服务器。我的脚本中的PHP代码接收JSON将其保存在内存中,然后回应它收到的内容。在我的客户端按下按钮时,它会发送上述JSON,在服务器返回结果后,会更改按钮的颜色。我正在尝试做的是有2个客户端使用相同的按钮我从第一个客户端发送POST请求并刷新第二个客户端,然后第二个客户端反映第一个客户端发布的更改。

这不起作用,我可能使用了错误的工具。我可以开始使用数据库,但最终我想实现一些需要大量写入和读取的东西,并且不需要存储很长时间。是否有一种不同的服务器端脚本语言更适合我正在尝试做的事情,或者数据库是我唯一的选择?

编辑:

我使用http的原因是因为它是一个不支持ipv6套接字或翻译的游戏客户端,所以我最好使用底层的http传输。我有一些代码在我的服务器上运行,它的工作方式与我想要的一样,但我不明白的是如何POST任何客户端都可以检索的数据。

<?php
$stream = fopen('php://memory','r+');
fwrite($stream, file_get_contents('php://input',true));
fseek($stream,0);
$data = json_decode($stream);
echo stream_get_contents($data);
?>

它是否在Apaches端分离传入的请求?我的部分问题是我不知道服务器端术语。我想说这是与并发或线程有关的东西,但需要做更多的研究。

我将研究socket.io,但基本上如何将一些数据发布到任何人都可以访问的某个位置?现在,唯一可以访问数据的客户端是发布数据的客户端。

php json database
2个回答
0
投票

您目前没有从客户端到服务器的持久连接(例如WebSockets),这是您的问题的关键:当客户端1更改按钮时,服务器无法告知客户端2有关更改的信息。您可以让客户端定期轮询服务器并检查状态更改,但这可能无法很好地扩展或支持低延迟。

这个问题原样是开放式的,但你可能可能会从维护客户端连接和状态的一些持久进程中受益。


0
投票

如果您的应用程序客户端和服务器打算在局域网中运行,或者他们的IP地址可以是公共的(不在nat之后),您可以使用简单的套接字定期告诉服务器它们在哪里(ip),当他们有消息时服务器将通过套接字连接通知他们,此时只有他们像往常一样使用HTTP请求从服务器检索消息,它更好,而不是定期告诉服务器有关新IP地址只有当它改变时如果您正在学习上述操作和实验以及生产或严肃的学校项目使用websocket

© www.soinside.com 2019 - 2024. All rights reserved.