【发布时间】:2014-06-20 06:36:54
【问题描述】:
我正在使用带有 PHP 和一些 Javascript 的 websockets。我将数据库中的一些信息显示给我的客户。我的目标是当信息插入我的数据库时刷新客户端。为了在我的数据库中插入一些数据,我从我的 PC 发送了一个发布请求。
目前,我可以每 10 秒刷新一次客户端以调用一个函数。但我只想在该页面上发送 POST 请求时刷新。
这里有一些东西可以帮助你理解:
- 客户端正在连接到网页。
- 在我的数据库上执行 SQL 选择
- 结果被接收并显示在网页上。
- 客户端已连接(通过 websockets)并查看数据库中的信息。
- 我。如果我在数据库中插入信息,我会发送一个 POST 请求(不是来自 HTML 表单,没有提交,只是一个 POST 请求,就像我使用 Postman 测试 Web 服务一样)。发送请求时,通过调用 Javascript 函数刷新客户端...
这是我所做的:
-
index.php(显示信息的页面)
$(document).ready(function(){ //create a new WebSocket object. var wsUri = "ws://localhost:9000/server.php"; websocket = new WebSocket(wsUri); websocket.onopen = function(ev) { // connection is open $('#message_box').append("<div class=\"system_msg\">Connected!</div>"); //notify user } // Call this function every 10 sec to refresh the client window.setInterval(function(){ displayInfo(1); }, 10000); websocket.onmessage = function(ev) { var msg = JSON.parse(ev.data); //PHP sends Json data $("#infos").html(msg.message); }; websocket.onerror = function(ev){$('#message_box').append("<div class=\"system_error\">Error Occurred - "+ev.data+"</div>");}; websocket.onclose = function(ev){$('#message_box').append("<div class=\"system_msg\">Connection Closed</div>");}; }); function displayInfo(r) { $.post("infos.php", { refresh : r}, function(data){ var msg = { message: data }; //convert and send data to server websocket.send(JSON.stringify(msg)); } ); } infos.php:我执行 SQL 选择请求的位置(工作正常)
server.php :服务器端的代码在哪里。 (工作正常)
嗯。我真的不知道我怎么能做到这一点。如何通知和调用函数displayInfo(r);如果一个 POST 请求被发送到这个页面。
非常感谢任何帮助。提前谢谢你。
问候, 拉皮努。
【问题讨论】:
-
你应该在这里找到一些好的提示:dsheiko.com/weblog/websockets-vs-sse-vs-long-polling
-
你用什么PHP库来做websocket服务器?
-
@sdespont - 谢谢!我今天会检查这个教程!
-
@JohnKiller - 我并没有真正使用图书馆。我已经按照本教程进行操作:sanwebe.com/2013/05/chat-using-websocket-php-socket
标签: javascript php jquery ajax