在线聊天 如何实现?
像占座上的那种在现聊天的很简洁,那是如何实现的呢?
现在有一个网站(php),同时大约有10人以内在线的。
应该通过什么语言实现》或者哪里有这方面的代码?
参考答案:用ASP和dreamerweaver可以啊
<!--#include file="../conn/conn.asp"-->
<%
dim info
dim changed
if Request.ServerVariables ("REQUEST_METHOD")="GET" then
UserID=Request.QueryString ("user")
myname=session("myname")'Request.QueryString ("roomname")
end if
if Request.ServerVariables ("REQUEST_METHOD")="POST" then
yinword=request.form("yinword")
myname=Request.Form ("userid")
UserID=myname
myroom=session("myroom")'Request.Form ("roomname")
mynickname=Request.Form ("mynickname")
newsql="update chatUserOnLine set TimeLastTalking='" & now & "' where UserID='" & UserID & "'"
conn.Execute (newsql)
Application.Lock
if left(Request.Form ("yinword"),1)="/" then
command=Request.Form ("yinword")
select case left(Request.Form ("yinword"),2)
case "/j" '加入新房间
newroom=trim(mid(Request.Form ("yinword"),4))
newsql="select RoomName,IfLocked,WhoCreate from chatRoomInfo where RoomName='" & newroom & "'"
set newrecord=conn.Execute (newsql)
'Response.Write newrecord("RoomName")
if newrecord.bof or newrecord.eof then
application(UserID)="没有这个房间号!<br><br>" & application(UserID)
elseif newrecord("IfLocked")=true then
newsql="select UserID from chatUserOnLine where RoomName='" & newroom & "' and UserID='" & newrecord(2) & "'"
set myrecord=conn.Execute (newsql)
if not myrecord.BOF then
application(UserID)="这个房间已经上锁,不能进入!<br><br>" & application(UserID)
else
Create_Leaved=true
newsql="update chatRoomInfo set IfLocked=0 where RoomName='" & newroom & "'"
end if
elseif Create_Leaved=false then
'changed=true
application(UserID)=application(newroom)
newsql1="select UserID from chatUserOnLine where RoomName='" & newroom & "'"
set targ=server.CreateObject ("ADODB.Recordset")
targ.Open newsql1,conn,1,3
do while not targ.eof
tempname=cstr(targ("UserID"))
'Response.Write targ("UserID")
if tempname<>UserID then
application(tempname)="<br>" & mynickname & "大摇大摆地进来了!(请刷新)<font color=blue size=1>(" & time() & ")</font><br><br>" & application(tempname)
end if
targ.movenext
loop
newsql3="update chatRoomInfo set HowManyUsers=HowManyUsers+1 where RoomName='" & newroom & "'"
conn.Execute (newsql3)
newsql4="update chatRoomInfo set HowManyUsers=HowManyUsers-1 where RoomName='" & myroom & "'"
conn.Execute (newsql4)
newsql2="update chatUserOnLine set RoomName='" & newroom & "' where UserID='" & UserID & "'"
conn.Execute (newsql2)
application(UserID)="你已经进入了" & newroom & "房间<br><br>" & application(UserID)
session("myroom")=newroom
changed=true
targ.Close
set targ=nothing
end if
case "/r" '查看聊天室房间信息
newsql="select * from chatRoomInfo"
set newrecordseyinword=conn.Execute (newsql)
do while not newrecordseyinword.eof
info=info & newrecordseyinword("RoomName") & "--" & newrecordseyinword("HowManyUsers") & "--" & newrecordseyinword("Topic") & "--" & newrecordseyinword("IfLocked") & "--" & newrecordseyinword("WhoCreate") & "<br>"
newrecordseyinword.movenext
loop
'Response.Write info
application(UserID)=info & "<br>" & application(UserID)
case "/w" '查看聊天室成员信息
if len(trim(Request.Form ("yinword")))=2 then
newsql="select * from chatUserOnLine"
set newrecordset2=conn.Execute (newsql)
do while not newrecordset2.eof
info=info & newrecordset2("UserId") & "--" & newrecordset2("RoomName") & "--" & newrecordset2("IpAdd") & "--" & newrecordset2("TimeLogin") & "<br>"
newrecordset2.movenext
loop
application(UserID)="<font color=red>"& info & "<br>" & application(UserID)
else
if right(left(Request.Form ("yinword"),3),1)<>":" then
info="命令行输入错误<br>"
application(UserID)=info & application(UserID)
else
temproom=mid(trim(Request.Form ("yinword")),4)
newsql="select RoomName from chatRoomInfo where RoomName='" & temproom & "'"
set newrecord3=conn.Execute (newsql)
if not newrecord3.bof then
newsql="select * from chatUserOnLine where RoomName='" & temproom & "'"
set newrecordset2=conn.Execute (newsql)
if newrecordset2.bof then
application(UserID)="<br>该房间暂时没有人!<br><br>" & application(UserID)
else
do while not newrecordset2.eof
info=info & newrecordset2("UserId") & "--" & newrecordset2("RoomName") & "--" & newrecordset2("IpAdd") & "--" & newrecordset2("TimeLogin") & "<br>"
newrecordset2.movenext
loop
application(UserID)="<br>" & info & "<br>" & application(UserID)
end if
else
info="<br>没有<font color=red><strong>" & temproom & "</strong></font>这个房间!<br>"
application(UserID)=info & application(UserID)
end if
end if
end if
case "/l" '锁住本房间
'lockroom=mid(Request.Form ("yinword"),4)
newsql="select WhoCreate from chatRoomInfo where WhoCreate='" & UserID & "' and RoomName='" & session("myroom") & "'"
set newrecordset=conn.Execute (newsql)
if newrecordset.bof then
application(UserID)="不好意思,你无权锁住这个房间!<br><br>" & application(UserID)
else
newsql="update chatRoomInfo set IfLocked=1 where RoomName='" & session("myroom") & "'"
conn.Execute (newsql)
application(UserID)="你已经锁住了这个房间!<br><br>" & application(UserID)
end if
case "/u"'解开房间
newsql="select WhoCreate from chatRoomInfo where WhoCreate='" & UserID & "' and RoomName='" & session("myroom") & "'"
set newrecordset=conn.Execute (newsql)
if newrecordset.bof then
application(UserID)="不好意思,你无权解开这个房间或者不在那个房间!<br><br>" & application(UserID)
else
newsql="update chatRoomInfo set IfLocked=0 where RoomName='" & session("myroom") & "'"
conn.Execute (newsql)
application(UserID)="你已经解开了这个房间!<br><br>" & application(UserID)
end if
case "/c"
application(session("myname"))=""
case "/b" '退出聊天室
%>
<script language="javascript">
<!--
top.location.href ="chatbye.asp"
//-->
</script>
<%
session.Abandon
Response.End
case "/h" '显示帮助系统
info="/h---显示帮助提示<br>"
info=info & "/j:roomname---加入新的房间<br>"
info=info & "/r---查看当前房间信息<br>"
info=info & "/w:roomname---查看当前用户情况<br>"
info=info & "/l--锁住当前房间,只有创建者才能锁住<br>"
info=info & "/b--退出聊天室<br>"
info=info & "/u--解开某个房间<br>"
info=info & "/t:modifytopic--修改话题,只有创建者才能修改<br>"
info=info & "/c--清除聊天内容<br>"
application(UserID)= "<br>" & info & "<br>" & application(UserID)
case "/t"'更改房间话题
if right(left(command,3),1)<>":" then
application(UserID)="<br>命令输入错误!<br><br>" & application(UserID)
else
newsql="select WhoCreate from chatRoomInfo where WhoCreate='" & UserID & "' and RoomName='" & session("myroom") & "'"
set newrecordset=conn.Execute (newsql)
if newrecordset.bof then
application(UserID)="不好意思,你无权修改这个房间的话题!<br><br>" & application(UserID)
else
newsql="update chatRoomInfo set Topic='" & mid(command,4) & "' where RoomName='" & session("myroom") & "'"
conn.Execute (newsql)
newsql="select UserID from chatUserOnLine where RoomName='" & session("myroom") & "'"
set t_newrecordset=conn.Execute (newsql)
do while not t_newrecordset.eof
application(t_newrecordset(0))="房间话题被修改为<font color=#ff0000>" & mid(command,4) & "</font>!<br><br>" & application(t_newrecordset(0))
t_newrecordset.movenext
loop
t_newrecordset.close
set t_newrecordset=nothing
'application(UserID)="你已经修改这个房间的话题为<font color=vbpurplea>" & mid(command,4) & "</font>!<br><br>" & application(UserID)
end if
end if
case else
application(UserID)= "<br>没有这个命令,请用/h查看帮助<br>" & application(UserID)
end select
else
if request.form("targ")<>"all" then
id_name=Request.Form ("targ")
'Response.Write id_name
temppos=instr(1,id_name,",",1)
yourid=mid(id_name,1,temppos-1)
yournickname=mid(id_name,temppos+1)
end if
set myrecord=server.CreateObject ("ADODB.Recordset")
mysql="select * from chatUserOnLine where RoomName='" & myroom & "'"
myrecord.Open mysql,conn,1,3
'application.lock
if request.form("targ")="all" or request.form("siliao")<> "ON" then
if request.form("targ")="all" then
tempstr="<font color='" & request.form("color1") & "'>" & mynickname & Request.Form ("facing") & "说: " & request.form("yinword") & "</font><font color=blue size=0.5>(" & time() & ")</font><br>"
else
tempstr="<font color='" & request.form("color1") & "'>" & mynickname & "悄悄对" & yournickname & Request.Form ("facing") & "说: " & request.form("yinword") & "</font><font color=blue size=0.5>(" & time() & ")</font><br>"
end if
do while not myrecord.EOF
application(myrecord("UserId"))=tempstr & application(myrecord("UserId"))
myrecord.MoveNext
loop
application(myroom)=tempstr & Application(myroom)
'if len(application(myroom))>1000 then
'
' length2=len(application(myroom))
' temppos=instrrev(application(myroom),"<br>",length2)-1
' application(myroom)=mid(application(myroom),1,temppos)
' end if
' application(UserID)= "<br>len(application(myroom))" & len(application(myroom)) & "<br>" & application(UserID)
' application(UserID)= "<br>length2" & length2 & "<br>" & application(UserID)
' application(UserID)= "<br>temppos" & temppos & "<br>" & application(UserID)
else
tempstr="<marquee border='0' behavior='alternate'><font color='" & request.form("color1") & "'>" & mynickname & "对" & yournickname & Request.Form ("facing") & "说:" & request.form("yinword") &"</font></marquee>" &"<font colovrr=blue size=0.5>(" & time() & ")</font><br>"
application(yourid)=tempstr & application(yourid)
application(myname)=tempstr & Application(myname)
end if
'if len(application(myname))>20000 then
' length1=len(application(myname))
' temppos=instrrev(application(myname),"<br>",length1-4)-1
' application(myname)=mid(application(myname),1,temppos)
'end if
application.unlock
end if
'Response.Write (application(UserID))
Response.Write application(UserID)
else
Response.Write application(UserID)
end if
conn.Close
set conn=nothing
if changed=true then
%>
<script language="javascript">
<!--
parent.frames[1].location.href="chatsend.asp"
//-->
</script>
<%
end if
%>
<html>
<head>
<meta http-equiv="refresh" content="10;url=chatcontent.asp?user=<% =UserID %>">
<title>聊天内容</title>
<base target="ltop">
</head>
<body bgcolor="rgb(254,252,237)">
</body>
</html>