我在我的覆盆子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,但基本上如何将一些数据发布到任何人都可以访问的位置?现在,唯一可以访问数据的客户就是发布数据的客户端。
答案 0 :(得分:0)
您目前没有从客户端到服务器的持久连接(例如WebSockets),这是您的问题的关键:当客户端1更改按钮时,服务器无法告知客户端2有关更改的信息。您可以让客户端定期轮询服务器并检查状态更改,但这可能无法很好地扩展或支持低延迟。
这个问题原样是开放式的,但你可能会从维护客户端连接和状态的一些持久进程中受益。
答案 1 :(得分:0)
如果您的应用程序客户端和服务器打算在局域网中运行,或者他们的IP地址可以是公共的(不在nat之后),您可以使用简单的套接字定期告诉服务器他们在哪里(ip),当他们有服务器将通过套接字通知它们的消息 连接,此时只有他们像往常一样使用HTTP请求从服务器检索消息 它甚至更好,而不是定期告诉服务器只有在它发生变化时才知道新的IP地址 如果您正在学习和试验以及生产或严肃的学校项目使用websocket
,请执行上述操作