如何使用JavaScript与Web服务器交互
How to interact with Web server using JavaScript
我正在尝试使用AppWeb开源web服务器开发一个交互式聊天应用程序。
我需要一些机制,使Web服务器能够向客户端发送更新的消息,这样当远程用户发送消息时,将在客户端自动更新。
但我们只需要在HTML和JavaScript中实现它,而不是HTML5。
所以我需要一些池化机制来为新事件池化我的Web服务器。
那么我应该如何在Javascript中使用Sockets编写池机制。
它应该如何在服务器端实现?
谢谢!
已经有一些例子了…根据服务器端的不同,您可以选择java-hello-world或php-hello-world或…
如果你不能使用websocket,你必须可以走旧的方式,通过window.setInterval
创建一个间隔,并使用eg从服务器提取数据。$.ajax()
。我不知道任何其他替代双向连接(websocket)…见kayahr的回答
如你所愿:$.ajax()
是用jQuery实现xhr的方法。基本上,它向服务器发出异步请求,服务器返回XML或json或文本或…(不管)。当这个请求返回时,支持的eventandler被触发,你可以对响应做出反应。您也可以使用普通的xhr,但是处理原始的xhr有点笨拙。
jQuery支持$.ajax()
的一些简写重载,例如。$.getJSON()
, $.get()
,…
$.get("test.cgi", function(data){
alert("Data Loaded: " + data);
});
还有另一种技术可以将消息从服务器发送到客户机。你必须使用iframe连接到一个PHP脚本(或任何技术,你正在使用的服务器端),这不会关闭连接。PHP脚本然后发送JavaScript消息,每当客户端必须通知的东西。在每条消息之后,服务器刷新输出流,以确保数据确实找到了到达客户端的方式,而不是被某个输出缓冲区缓存。下面是加载在iframe中的PHP脚本的一个小示例代码(没有经过测试,也不完整,只是为了展示基本知识):
<html>
<body>
<script type="text/javascript">
function receiveMsg(data)
{
// Do something with the data, for example send it to some function
// in the parent frame (Where your chat application lives)
}
<?php
while (true) // You may also implement some abort state which should
// be checked here
{
$data = waitForData(); // This is your magic function on the server
// which waits for data to be send to the client
echo "receiveMsg('" . $data . "');"; // Let's say data is just a string.
// You may want to use JSON instead
flush();
}
?>
</script>
</body>
</html>
这个方法的优点是它不依赖于轮询。因此,您不必每隔x秒就向服务器发送请求。当你在服务器端做正确的事情时,一个用户发送的消息会被其他用户尽可能快地接收到,而不是延迟x秒。缺点是每个聊天用户都有一个永久的HTTP连接。但这可能需要更少的服务器资源,而不是每分钟为每个聊天用户提供数十个完整的HTTP请求。
- 为什么服务器端和客户端脚本无法交互
- 服务器端(python)和客户端(javascript)设计和交互
- 如何扩展 EJSON 以序列化 Meteor 客户端-服务器交互的 RegEx
- 将控制器与与服务器交互的服务分离的任何好处
- 服务器与客户端交互,反之亦然
- 使用AJAX与服务器交互
- 了解HTML5 pushState和服务器端交互
- 将javascript数据导出到CSV文件,无需服务器交互
- 如何在不需要服务器交互或cookie的情况下将值从一个Javascript文件传输到另一个JS文件
- HTML5 Web Sockets如何与代理服务器交互
- 如何在长时间运行的服务器操作期间与用户交互(例如确认对话框)
- 将HTML字符串发送到服务器,然后我可以使用DOM与它交互吗?可以在上面使用jQuery吗?
- 使用浏览器将文件保存到本地系统,使用指定的文件名和扩展名html &没有服务器交互的Javascript
- 允许两个客户端在没有服务器的情况下交互
- 扩展如何与数据库交互而不强制用户安装服务器和php
- 两个Node服务器可以同时运行并交互吗,这样其中一个服务器就是为客户端服务的中介
- 服务器上的脚本与客户端 Javascript 交互
- 最佳服务器API和客户端Javascript交互方法
- 两个用户代理在没有服务器交互的情况下通信是可能的吗?
- 如何使用JavaScript与Web服务器交互