首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

.net 即时通讯有关问题,大神 各位领导都来讨论下

2012-05-29 
.net 即时通讯问题,大神 各位领导都来讨论下手里有个项目,主要做bs+cs实现即时通讯,可以单聊,私聊群聊。cs

.net 即时通讯问题,大神 各位领导都来讨论下
手里有个项目,主要做bs+cs实现即时通讯,可以单聊,私聊群聊。

cs主要是客户端,
bs就是用户了

我现在是走的socket方法,进行通讯

我现在可以给服务器发送信息,但是服务器给我信息我也能收到,但是前台不显示。

贴代码:

C# code
//连接客户端        private void SendSocket()        {            labmsg.InnerText = "正在建立连接";            //连接            socket = new AsySocket(Cip, port);            socket.OnSended += new AsySocketEventHandler(socket_OnSended);            socket.OnSendTo += new AsySocketEventHandler(socket_OnSendTo);            socket.OnStringDataAccept += new StringDataAcceptHandler(socket_OnStringDataAccept);            socket.OnClosed += new AsySocketClosedEventHandler(socket_OnClosed);            try            {                socket.LinkObject.Connect(Cip, port);            }            catch            {                labmsg.InnerText = "连接失败"; return;            }            labmsg.InnerText = "连接成功";            socket.BeginAcceptData();        }        void socket_OnSended(string SenderID, string EventMessage)        {            labcontent.Text += "<br/>我:"+txtcontent.Value.Trim();        }        void socket_OnClosed(string SocketID, string ErrorMessage)        {            //服务器关闭            Page.ClientScript.RegisterClientScriptBlock(GetType(), "key", "<script>alert('服务器关闭')</script>");        }        void socket_OnSendTo(string SenderID, string EventMessage)        {            throw new Exception("The method or operation is not implemented.");        }        void socket_OnStringDataAccept(string AccepterID, string AcceptData)        {            //AddMsg(AcceptData);            pmsg += AcceptData.ToString() + "<br/>";            labcontent.Text += AcceptData.ToString();            Page.ClientScript.RegisterStartupScript(GetType(), "key", "<script>almsg('"+AcceptData.ToString()+"');</script>");        }        private void AddMsg(string msg)        {            labcontent.Text += Environment.NewLine + msg;        }                //发送信息        protected void btnsend_Click(object sender, EventArgs e)        {            socket.ASend("Me:" + txtcontent.Value.Trim() + AsySocket.EndChar);        }


void socket_OnStringDataAccept(string AccepterID, string AcceptData)
{}
次方法就是客户端回复给我的信息,但是他是属于无刷新的, 我设置断点,客户端给我发送信息,我能接收到,但是没办法在前台显示。 

这应该怎么解决呢,后台能接受数据,前台也能显示呢??

小弟分不多了先来 80吧

[解决办法]
使用Comet思想
Comet:基于 HTTP 长连接的“服务器推”技术

跟Ajax轮询不一样的 楼主可以仔细研究下这篇文章 了解什么叫Comet

然后再看
Asp.net 构建可扩展的的Comet Web 应用
这是yanghua_kobe兄翻译的一篇文章 
英文地址是http://www.codeproject.com/KB/aspnet/CometAsync.aspx

我现在的项目就是按照这个思路去做的 速度很不错

热点排行