用DELPHI写一个CGI或ISAPI的聊天室该如何入手呢?(原谅我没分了)(9分)

  • 主题发起人 主题发起人 shopman
  • 开始时间 开始时间
S

shopman

Unregistered / Unconfirmed
GUEST, unregistred user!
能在网上找到的现成聊天室一定是PERL写的CGI,更不用说是ISAPI了而我近
来又需要聊天室所以取其鱼不如取其渔,但是又不知如何手所以……
 
主要原理是分2个frame,一个显示发言,一个和用户交互.
当用户按"发言按钮",将输入的发言提交给一个cgi/isapi, cgi将发言添加
到全体发言的后面(或前面?),然后将全体发言返回给浏览器.
注意,这个cgi的target是用来显示发言的那个frame.
至于全体的发言,可以保存到文本文件或用其他什么方法.
 
如何指定CGI的Target?
 
在html的调用语句里面:
<form name="chatroom" action="cgi-bin/xxx.exe" target="frame_for_showmessage">
 
聊天室涉及到网页的刷新问题,目前我只能在网页中加入一个方法定时刷新是否有更
好的法子?
 
to shopman:在你的html前面加上下面语句:
<meta http-equiv="Refresh" content="n;http://www.xxx.com/index.htm">
其中,n改成你需要刷新的频率(秒),xxx改成当前页的url

"更好的法子"是指什么? 目前的聊天室基本都是定时刷新的,不过
实现方法不同而已,有的是通过html语法(比如我的方法),有的是
通过javascript的setTimeout函数,有的用IETimer ActiveX控件.
但是殊途同归,原理都是"定时刷新".
 
"更好的法子":我的想法用CGI控制浏揽器地刷新,行吗?
 
绝对不可能! 看来你没了解CGI的工作原理.

1.CGI工作在server端,无法影响到客户端的效果;
2.CGI运行完毕(指返回数据给浏览器)后即被释放,根本不可能有什么定时之类
继续影响客户端.
 
编写聊天程序还要看你的运行平台。基于UNIX的用Perl就很不错。用普通CGI的话一定要注意你的资源是否能对付很多进程数,用ISAPI就好些。还是先找些PERL的程序先看看吧。我看过一个PERL程序。里面实际还用了不止一个的辅助程序。
 
例如:

A,B,C,三用户,A发言后CGI程序返回内容,这时B,C两个用户不能看见A发的言. 一
般作法是等待B,C两个用户自已定时刷新浏缆器才能看见A的发言,我想说的是CGI
被A执行后首先获得当前在线用户信息,然后向所有用户发出一个刷新浏缆器的信息
这样只有用户发言时才刷新更科学些。

cakk兄这样算不算“影响到客户端的效果”如果是的话我也只有用定时刷新了.

多谢您的指点!
 
你的想法很不错,很多人也这么想过,可是不现实.
因为从本质上来说,CGI是被动执行的,只有被浏览器调用才发生作用,
根本不可能"主动"向浏览器发消息!
如果真有什么技术能实现你的想法, 它一定不会是CGI.
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
911
DelphiTeacher的专栏
D
D
回复
0
查看
868
DelphiTeacher的专栏
D
D
回复
0
查看
840
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部