Web服务器如何给指定客户端发消息?

csbinchina 2009-07-01 09:28:40
现在刚接触这方面,请各位大牛多多帮助.如果有例子,请发一份给我.谢谢.

csbinchina@163.com
...全文
359 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
gonxi 2009-07-25
  • 打赏
  • 举报
回复
ajax
flash
comet
push
yyinin 2009-07-06
  • 打赏
  • 举报
回复
好象在什么地方看到过,叫http长连接, 原理好象是服务器端用一个死循环不关闭往客户端的输出。
然后循环里检测某一缓存的数据,也可以是数据库的,读到之后然后在输出到客户端。 不过对服务器的压力比较大,

建议用ajax,不用刷新页面也能得到服务器的信息,
book_customsyuan 2009-07-04
  • 打赏
  • 举报
回复
HTTP是无连接协议的,不可能存在WebServer主动发送的实现,除非不走HTTP。
如果一定需要的话,建议两种做法:
1、客户端IE轮询方式,至于是Form方式还是Ajax方式或者XmlHttp直接处理都无所谓,这对于Web程序处理比较简单;
2、IE的长任务实现,Web程序我们知道都是客户端的IE与Server之间的Request与Response的处理,如果你的后台处理在浏览器能够承受的时间范围内【timeout范围内容】总有一定量的数据送到客户端,那这个Page的load可能会花费很长时间【可能一直就没有断】,但是在约束时间范围内WebServer向IE有Response的响应,即可实现我们的长任务。你的实现无非也就是建立这个长任务,将信息写入Response中,客户端在检测到数据的进行显示即可。
csbinchina 2009-07-03
  • 打赏
  • 举报
回复
高人们都来各抒己见啊.....

拜托了
csbinchina 2009-07-03
  • 打赏
  • 举报
回复
请问还有其他办法吗?
加油馒头 2009-07-03
  • 打赏
  • 举报
回复
AJAX了
客户端定期请求,服务器端根据请求返回相应的值

很多聊天程序的原理就是这样的
cceon 2009-07-03
  • 打赏
  • 举报
回复
不刷新的话恐怕是不行的
koukoujiayi 2009-07-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 csbinchina 的回复:]
请问还有其他办法吗?
[/Quote]
也可用数据库方式!!
将发送给用户的信息放在该用户的ID下的某个字段中!
一但用该户登陆就显示这个字段!!
csbinchina 2009-07-02
  • 打赏
  • 举报
回复
兄弟们帮帮我一下啊.
koukoujiayi 2009-07-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 csbinchina 的回复:]
问题是不能刷新.

有不需要刷新就能收到的吗?
[/Quote]
从web机制上来说,不刷新是不可能收到的,
解决的办法就是局部刷新,可以用AJAX!!
页面放一个Timer定时器,设置一定的时间间隔,局部刷新一个页面!!
csbinchina 2009-07-02
  • 打赏
  • 举报
回复
问题是不能刷新.

有不需要刷新就能收到的吗?
koukoujiayi 2009-07-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 csbinchina 的回复:]
koukoujiayi: 那Web服务器怎么通过这些信息给用户发一个消息呢?

需要用户不用刷新就能收到.说的越详细越好啊.多谢了.
[/Quote]
刷新就可以收到!!
csbinchina 2009-07-02
  • 打赏
  • 举报
回复
koukoujiayi: 那Web服务器怎么通过这些信息给用户发一个消息呢?

需要用户不用刷新就能收到.说的越详细越好啊.多谢了.
koukoujiayi 2009-07-02
  • 打赏
  • 举报
回复
用SessionID,Application变量!!
用户登陆时,将用户名和SessionID放到一个Application变量中!!
例如登陆成功后执行:
Application["UserList"] +=userName+","+Session.SessionID.ToString() + "<br>";
这样就产生了一个访问用户的列表,
(当然你还要在Global.asax文件的Session_End事件中,将过期的用户从Application["UserList"]列表中删除)

管理员发送的页面代码大致如下:
1.显示在线用户列表,即:
Response.Write(Application["UserList"].ToString());
2.选择某个用户,即选择了某个SessionID
3.将你发送的信息及选择的SessionID分别放到Application变量中,大致如下:
Application["UserSessionID"]=你选择的某个SessionID;
Application["MyMessage"]=TextBox1.Text;

在用户的显示页面代码大致如下:
protected void Page_Load(object sender, EventArgs e)
{
if (Session.SessionID == Application["UserSessionID"].ToString())
{
Response.Write(Application["MyMessage"].ToString());
}
}


25,985

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧