我需要使用PHP作为后端和JQuery作为前端,与许多频道进行tet-a-tet彗星聊天.我需要像事件驱动的服务器这样做...但没有找到任何简单和appplicable我的任务.请告诉我这个问题的最佳解决方案
有人有Comet app .net的任何样本吗?我需要一个示例如何在服务器中持久保存客户端的连接?
我正在寻找一个COMET服务器,我想将服务器上的消息专门推送到一些id的用户,我正在使用php,我正在寻找一个好的,简单的COMET服务器.
你能告诉我哪一个最好吗?
我正在尝试使用XMLHttpRequest进行长轮询.它适用于所有支持的浏览器,但出于某种原因在iPhone上的safari上,我得到每个ajax调用的加载指示器,并且长时间轮询有点烦人.
我读到你需要等到文档加载完毕,但它没有缝合工作.任何其他已知的黑客来解决它?
我正在使用NodeJS v0.4.8和最新版本的socket.io
npm install socket.io
在Ubuntu上:
Linux mars 2.6.38-8-generic#42-Ubuntu SMP Mon Apr 11 03:31:50 UTC 2011 i686 i686 i386 GNU/Linux
遗憾的是,以下代码不会在客户端或服务器端产生任何输出.
有人有线索吗?
var http = require('http'),
io = require('socket.io'),
fs = require('fs'),
sys = require('sys');
respcont = fs.readFileSync('testclient.js');
server = http.createServer(function(req, res){
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(respcont);
});
server.listen(8082);
var socket = io.listen(server);
socket.on('connection', function(client){
sys.puts("New client is here!");
client.send("hello world");
client.on('message', function(msg) { sys.puts("client has sent:"+msg); }) ;
client.on('disconnect', function() { sys.puts("Client has disconnected"); }) ;
});
Run Code Online (Sandbox Code Playgroud)
<html> …Run Code Online (Sandbox Code Playgroud) 这是我的问题:我有一个脚本(让我们称之为comet.php)由AJAX客户端脚本提供,并等待更改发生如下:
while(no_changes){
usleep(100000);
//check for changes
}
Run Code Online (Sandbox Code Playgroud)
我不太喜欢这个,它不是很可扩展,它是(imho)"糟糕的做法"我想用信号量(?)或无论如何并发编程技术来改善这种行为.你能告诉我一些如何处理这个问题的技巧吗?(我知道,这不是一个简短的答案,但一个起点就足够了.)
编辑:LibEvent怎么样?
我想为我的网站实现聊天系统.功能将与Facebook聊天非常相似.聊天将是一对一的.
我知道如何使用PHP,MySql和使用JQuery构建聊天系统.但我担心的是,从长远来看,它不会扩展到大量用户.
使用JQuery我会每秒发出一次请求以保持聊天窗口的更新,或者用户是否正在发送与其他用户聊天的请求.这将导致服务器上的额外负载,因为用户群将增加加班时间.
我被告知使用PHP这不是一个理想的解决方案,我应该研究彗星编程,这是我以前从未尝试过的.
我的问题是,我可以使用任何预构建框架,还是构建它的更好方法?
我听说过NodeJs和APE,但我的服务器不支持这些.
多谢你们.
编辑:在与我的服务器人员谈话后,我可能会更改我的操作系统,以便我可以运行NodeJS.nodejs的可伸缩性有多好,它能满足我的需求吗?
我将为彗星编程开发一个框架,我不能使用Web套接字或服务器发送事件(因为浏览器支持真的很糟糕).因此,我需要保持HTTP连接的活动状态,并将分块数据发送回客户端.
但是,当您进入工作时,问题就出现了:
xhr.responseText,同时xhr.readyState为3.iframe无用,因为浏览器在我将数据发送回客户端时显示加载器.但是,当我查看Lightstreamer演示页面时,我看到它一点一点地将JavaScript文件发送回客户端,并且在每一步中,它都会调用该函数并且该函数只是被执行(我不能这样做)部分).似乎Lightstreamer使用AJAX,因为请求只是出现在Firebug的控制台选项卡中,但它也像IE中的魅力一样.
我试图使用他们在请求中设置的每个HTTP头字段,但没有结果.我也尝试使用HTTP Post而不是HTTP Get,但仍然没有结果.
我已经阅读了近20篇关于如何实施彗星的文章,但是没有一篇文章可以解决我遇到的问题:
有人可以帮忙吗?我认为应该有一个非常小的提示或技巧,我不知道在这里将所有概念粘合在一起.有谁知道lightstreamer会做些什么来克服这些问题?
基本上,我试图从头开始使用node.js建立一个基本的彗星服务器和客户端.一个尝试谷歌的事情它应该工作的过程,因为我正在测试它似乎工作正常.然而,一个问题仍在我脑海中.首先,我想向您展示代码.
var http = require('http');
var sys = require('sys');
var fs = require('fs');
var qs = require('querystring');
var server = http.createServer();
var connections = [];
server.on('request', function(req, res) {
console.log(req.url);
if(req.url == '/index') {
fs.readFile(__dirname + '/index.html', function(err, data){
if(err) {
res.writeHead(err, data);
return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);
});
} else if(req.url == '/sendData') {
if (req.method == 'POST') {
var body = '';
req.on('data', function (data) {
body += data;
});
req.on('end', function () {
var POST …Run Code Online (Sandbox Code Playgroud) comet ×10
ajax ×5
javascript ×4
php ×4
jquery ×2
node.js ×2
reverse-ajax ×2
asp.net-ajax ×1
concurrency ×1
dwr ×1
facebook ×1
http ×1
iphone ×1
java ×1
jetty ×1
mysql ×1
semaphore ×1
server-push ×1
socket.io ×1