我正在使用长轮询与gevent聊天.我正在等待在聊天中发布新消息时使用Event.wait().
我想处理客户端断开某些功能的场合:
例如,返回"客户端已断开连接"作为其他聊天用户的消息
这可能吗?=)
我正在使用play框架开发一个浏览器游戏,我肯定需要longpolling,但我不太明白如何使用它.WebSockets对于它来说是完美的,但它还没有得到那么多浏览器的支持.
这就是我想要做的事情:当用户登录并导航到游戏控制器时,我想开始连接并保持打开状态.我想为所有在线用户执行此操作,因此我可以在网站上显示这些用户的列表,以便他们可以互相玩耍.我查看了文档,但我不明白如何在我的情况下实现它.因为根本没有我想要计算的东西(在示例中他们正在生成pdf)我只想让连接保持打开状态.
我还想知道的是,我应该如何跟踪所有这些开放的连接?现在,我online在数据库的users表中只有一个列,我更新了.每次有人连接时我都要更新数据库.有没有更好的方法来做到这一点,还是这样好吗?
最后,假设以上所有工作.当玩家A选择玩家B玩时:如何通知玩家B?我只是发送一些JSON代码,并在播放器B的一侧用javascript更改页面,还是将他发送到一个完全不同的页面?当两个连接建立并且游戏已经开始时,我不确定如何通信.
我使用ajax long polling和Gevent实现了聊天.要读取,客户端ajax更新视图并等待Gevent.event.wait进行更新.
问题:Django在请求开始时打开的Postgresql事务(获取会话信息)直到请求结束才关闭.那些空闲的事务占用了大量的内存.
在不关闭请求的情况下关闭Postgresql事务最简洁的方法是什么?我正在手动发送request_finished信号,但感觉就像是黑客.
经过一周的谷歌搜索和搜索.我很难找到一个关于数据库表长轮询的单一教程,而不是名为data.text的平面文本文件.目前,我手动编写data.text中的任何内容,它立即出现在浏览器中.
这是一个问题:使用数据库进行长轮询?即使在StackOverflow中也没有正确回答.(我在这里找到了很多,但徒劳无功.).这里的例子也是 MySQL的filemtime替代品
如何修改getdata.php使其能够从数据库中获取数据?
$sql=mysqli_query($database,"SELECT * FROM messages where time>=$curr_date ORDER by time DESC");
while($row=mysqli_fetch_array($sql)){
$messages=$row['messages'];
$id=$row['id'];
echo $messages;
}
Run Code Online (Sandbox Code Playgroud)
消息表如下
id fro to mesg time status last_modified
Run Code Online (Sandbox Code Playgroud)
我在这里列举一个例子.在此示例中,正在使用三个文件.
是否需要制作第四个文件来从数据库(mysql)获取数据?如果没有,那么在getdata.php或data.text中需要进行哪些类型的更改才能使用数据库中的动态数据?
这是我的Javascript
<script type="text/javascript" charset="utf-8">
var timestamp = null;
function waitformsg() {
$.ajax({
type:"Post",
url:"getdata.php?timestamp="+timestamp,
async:true,
cache:false,
success:function(data) {
var json = eval('(' + data + ')');
if(json['msg'] != "") {
$("#messages").append(json['msg']);
}
timestamp = json["timestamp"];
setTimeout("waitformsg()", 1000);
},
error:function(XMLhttprequest, textstatus, errorthrown) {
alert("error:" + textstatus …Run Code Online (Sandbox Code Playgroud) 我搜索了很多关于轮询技术但我找不到任何关于如何在asp.net mvc中应用这种技术的内容.有很多文章和文档,但大多数关于PHP和ajax.
我希望在两个地方使用这个技术和我的项目,一个是像twitter这样的推文系统,另一个是聊天系统.我很好奇在MVC中应用这种技术的最佳方法是什么?我必须使用SignalR吗?这是最好的选择吗?
如果你能给我一些样品或文件,那就太好了,谢谢!
我正在使用http.Client长轮询的客户端实现:
resp, err := client.Post(url, "application/json", bytes.NewBuffer(jsonPostBytes))
if err != nil {
panic(err)
}
defer resp.Body.Close()
var results []*ResponseMessage
err = json.NewDecoder(resp.Body).Decode(&results) // code blocks here on long-poll
Run Code Online (Sandbox Code Playgroud)
是否有标准方法来抢占/取消客户端的请求?
我想调用resp.Body.Close()会这样做,但是我必须从另一个goroutine那里调用它,因为客户端通常已经被阻止阅读长轮询的响应.
我知道有一种方法可以设置超时http.Transport,但我的应用程序逻辑需要根据用户操作进行取消,而不仅仅是超时.
我想制作Asp.NET网络聊天应用程序,发现这Signalr是最好的选择.我发现了一个示例项目,Long Polling但似乎发送消息需要很长时间,或者它只是取消它.我想打快速聊天应用程式,例如Facebook和Google.
请给我更好的方法继续.
我使用 Javascript AJAX 和长轮询。尝试找到服务器响应超时的最佳值。
我阅读了很多文档,但找不到超时的详细解释。
有人选择20秒,其他30秒...
如何为超时选择更好的值?我可以用5分钟吗?这是正常的做法吗?
PS:可能的 Ajax 客户端互联网连接:以太网 RJ-45、WiFi、3G、4G,以及 NAT、代理。
我担心在某些情况下由于长时间超时,第三方可能会断开连接。
我需要long polling为聊天应用程序实现.我一直在寻找,但我只是在JavaScript使用中找到了如何实现它JQuery.我怎样才能使用native JavaScript和实现它node.js?你能指导我一些相关的文章或材料吗?
我需要做API调用来显示某些内容的进度.
我创建了一个服务,每1.5秒执行一次
主要部分
private getProgress() {
this.progressService.getExportProgress(this.type, this.details.RequestID);
}
Run Code Online (Sandbox Code Playgroud)
Services.ts
public getExportProgress(type: string, requestId: string) {
Observable.interval(1500)
.switchMap(() => this.http.get(this.apiEndpoint + "Definition/" + type + "/Progress/" + requestId))
.map((data) => data.json().Data)
.subscribe(
(data) => {
if (!data.InProgress)
//Stop doing this api call
},
error => this.handleError(error));
}
Run Code Online (Sandbox Code Playgroud)
这个电话有效,但它一直在继续.我想在进度结束时停止进行API调用(if (!data.InProgress)但我仍然坚持这一点.
我怎样才能正确地取消订阅这个可观察的时间if (!data.InProgress)?
谢谢
long-polling ×10
ajax ×2
django ×2
gevent ×2
javascript ×2
signalr ×2
angular ×1
asp.net ×1
asp.net-mvc ×1
c# ×1
comet ×1
django-views ×1
go ×1
http ×1
java ×1
jquery ×1
mysql ×1
node.js ×1
php ×1
postgresql ×1
python ×1
typescript ×1
websocket ×1