我必须承认,这是我在这个网站上的第一篇文章,所以如果我做错了(格式化等),我会在建议中道歉.
无论如何,我正在使用javascript(和jQuery)创建一种mmo,到目前为止,Chrome,Safari,Firefox等都运行良好.但是,我发现在某个地方,Internet Explorer崩溃了.
通过重现崩溃,我把它缩小到这个代码:
function getUpdates(){
var data={uid:playerName,area:1,mid:lastMessage};
$.ajax({
url: "getUpdates.py",
timeout: 32000,
data: data,
type:"GET",
complete: function(obj, textStatus){
//handleUpdates(obj);
getUpdates();
}
});
}
Run Code Online (Sandbox Code Playgroud)
应该在很长一段时间内轮询更新.但是,在一次回复之后的IE中,这段代码陷入无限循环,这会使浏览器崩溃.只有在没有服务器响应时,每次回复后似乎都不会崩溃.
注意,表示"完成:......"的行已被尝试为:
success: function(...){getUpdates();...},
error: function(...){getUpdates();...}
Run Code Online (Sandbox Code Playgroud)
出现同样的问题.
我已经为长轮询编写了服务器端代码。我想用java编写客户端程序。因此,根据长轮询,客户端发送一个请求,该请求得到服务器的帮助,服务器在发生事件时响应该请求,然后客户端发送一个新请求。
所以我面临的麻烦是用java编写的客户端。发送请求后,如果服务器已响应,如何继续检查客户端。我应该以什么时间间隔继续向服务器发送请求。我完全糊涂了。我是 Web 技术的初学者。我试过谷歌搜索这个,但所有的例子都是基于客户端是一个 java 脚本或 JSP。任何人都可以提供指向正确教程的链接,其中客户端是 Java HTTp 应用程序或提供一个示例(即实现长轮询)。
我更像是一个php程序员,而不是c#,但请耐心等待.
我有一个应用程序连接到一个不时发送推送消息的API.它使用长轮询作为机制.我已经研究过使用signalR,但所有示例都显示服务器正在推送消息.我希望服务器通过longpolling接收消息.有谁知道如何做到这一点?
我已经阅读了很多关于实时推送通知的文章.简历是websocket通常是首选技术,只要您不关心100%的浏览器兼容性.然而,有一篇文章指出了这一点
长轮询 - 可能在您与服务器交换单个呼叫时,服务器正在后台进行一些工作.
这正是我的情况.用户按下一个按钮,在服务器端启动一些复杂的计算,一旦答案准备就绪,服务器就会向客户端发送推送通知.问题是,我们可以说,对于一次性响应的情况,长轮询是比websockets更好的选择吗?或者除非我们担心过时的浏览器支持,如果我要从头开始启动项目,那么在涉及推送协议时,websockets应该总是优先考虑长轮询?
我正在开发一个聊天应用程序,到目前为止,我每两秒轮询一次我的服务器以获取消息。为了使聊天更即时,我想实现长轮询。我正在尝试实现这一点为它JS.info 指南,但我一直没有达到我打算达到的目标。任何人都可以为我的案例指出这一点吗?
我在 react 中有一个自定义钩子,现在是基本的轮询。
仅供参考:我是初学者,现在不会使用 WS 或 Socket.io。在这一点上对我来说太过分了。
提前致谢!
export default function useGetChatMessages(_id) {
const [chatMessages, setChatMessages] = React.useState([]);
React.useEffect(() => {
const interval = setInterval(() => {
getChatMessages(_id).then(fetchedChatMessages => {
setChatMessages(fetchedChatMessages);
});
}, 2000);
return () => clearInterval(interval);
}, [_id]);
return chatMessages;
}
Run Code Online (Sandbox Code Playgroud)
这是我使用 express 的服务器功能。我想它应该在这里实现而不是在我的钩子中
router.get('/:id/messages', async (request, response) => {
try {
const chat = await Chat.findById(request.params.id);
response.json(chat.messages);
} catch (error) {
console.log(error);
response.status(500).json({ message: error.message });
}
});
Run Code Online (Sandbox Code Playgroud) 我正在使用JSONP进行长轮询,并且firefox不断弹出"正在加载"的微调器,使页面看起来好像还没有完成加载.有没有办法压制这个?
我被告知Orbited团队有抑制这个的黑客,但通过Orbited.js代码我无法弄清楚它们是什么.任何帮助将不胜感激.
由于您使用的是事件循环而不是线程,因此实际服务器看起来如何?
我知道它使用事件循环,但是你如何分离请求?而且你如何防止你的服务器运行速度非常慢(因为它,我认为,因为它是无线的,所以一次只能推送一件事?)
某种伪代码会很棒.
原谅我的无知; 当然,如果某个地方用非基本的方式解释它"这样就足够了,直到你有1000名游客的方式",我很高兴知道它.
我最近在StackOverflow上询问了一个关于我的函数的问题,人们建议我使用Ajax Long Polling.我花了几天的时间来研究这个主题,并尝试编写基本的长轮询代码,但没有一个能够工作,我根本无法完成任何工作.
这是我的基本功能:
<script language='javascript' type='text/javascript'>
var interval=self.setInterval("checkformessages()",4000)
function checkformessages() {
$('#incomingmessages<?php echo $otherchatuser ?>').load('checkfornewmessages.php?username=<?php echo $username; ?>&otherchatuser=<?php echo $otherchatuser; ?>');
}
</script>
Run Code Online (Sandbox Code Playgroud)
有人能够告诉我如何将其转换为基本的长轮询功能,或者甚至直接指向我需要到达的路径.很感谢任何形式的帮助.谢谢!
我需要检查是否将命令写入txt文件以更新Web浏览器中的3D窗口.这就是所谓的"推送"技术或长轮询以通知客户端.由于浏览器必须是 Internet Explorer,我有点受限.
我想出了一个使用隐藏iframe的解决方案,该iframe调用一个php脚本,每秒重新加载以检查txt文件.
<iframe noresize scrolling="no" frameborder="0" name="loader" src="loader.php">
Run Code Online (Sandbox Code Playgroud)
loader.php基本上是这样做的:
//check txt and get commands
<body onLoad="window.setInterval('location.reload()',1000);"></body>
Run Code Online (Sandbox Code Playgroud)
我看到的唯一问题是网页浏览器中的每一秒重新加载按钮都会闪烁.虽然窗口没有闪烁,只是按钮,我仍觉得有点烦人.
有没有更好的解决方案来解决这个问题,仍然与IE兼容?
我使用内置的MZFayeClient(https://github.com/m1entus/MZFayeClient)WebSocket.我需要实现长轮询技术.怎么做?从哪儿开始?没有关于如何操作的信息(或足够的信息),或者是否存在具有长轮询的Faye库.