在即时消息方面需要帮助

编程入门 行业动态 更新时间:2024-10-27 15:22:03
本文介绍了在即时消息方面需要帮助的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在开发一个社交网站,我想在其中实现即时通讯工具来与用户进行沟通. 我搜索了帮助,但发现了旧的场景,人们通过聊天室进行交流. 相反,我需要一个gtalk或Facebook之类的应用程序,其中1个人可以从他的朋友列表中与在线朋友进行交流. 请同样指导我. 谢谢您.

I''m developing a social networking site where i want to implement instant messenger to communicate the user. I searched for the help but i found the old scenario where the people communicating via chat rooms. Rather i wan a application like gtalk or the facebook where 1 person can communicate with the online friends from his friend list. Kindly guide me for the same. Thanking you

推荐答案

它与聊天室基本相同,但是您可以为对话创建一个临时的房间".这样一来,Gtalk便很容易做到,它允许您邀请更多的人进行双向聊天来创建群聊. 至于实现它,您需要一个计时器驱动的AJAX轮询器,该轮询器询问服务器是否有任何更改,并在用户键入某些内容,更改状态或在浏览器中显示与聊天相关的任何其他操作时提交AJAX提交.我想您可以在其中找到相应的说明. It''s basically the same as a chatroom, but you can create a temporary ''room'' for the conversation. That makes it easy to do that thing Gtalk does of allowing you to create a group chat by inviting more people into a two-way chat. As for implementing it, you need a timer-driven AJAX poller which asks the server whether anything has changed, and make AJAX submissions when a user types something, changes status or does anything else relevant to chat display in their browser. I imagine you can find instructions on that easily enough.

选中此 stackoverflow/questions/757536/integrating-instant- messages-into-an-asp-net-application [ ^ ] Check this stackoverflow/questions/757536/integrating-instant-messaging-into-an-asp-net-application[^]

感谢,我粘贴了登录页面和聊天室的代码,请建议我使用javascript加载每个用户的联系和聊天窗口. Default.aspx.vb thanx, im pasting the code for the log in page and chatroom , please suggest me the javascript to load the contact and also to chat windows per user. Default.aspx.vb Imports System Imports System.Linq Imports System.Web.UI.WebControls Partial Class _Default Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load End Sub Protected Sub Login1_Authenticate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.AuthenticateEventArgs) Handles Login1.Authenticate Dim db As LinqChatDataContext = New LinqChatDataContext Dim user = (From u In db.Users _ Where u.Username = Login1.UserName _ And u.Password = Login1.Password _ Select u).SingleOrDefault() If Not user Is Nothing Then e.Authenticated = True Session("ChatUserID") = user.UserID Session("ChatUsername") = user.Username Else e.Authenticated = False End If End Sub Protected Sub Login1_LoggedIn(ByVal sender As Object, ByVal e As System.EventArgs) Handles Login1.LoggedIn Response.Redirect("Chatroom.aspx?roomId=1") End Sub End Class

chatroom.aspx.vb

chatroom.aspx.vb

Imports System Imports System.Web.UI.WebControls Imports System.Linq Partial Class Chatroom Inherits System.Web.UI.Page Implements System.Web.UI.ICallbackEventHandler Private _callBackStatus As String Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Not IsPostBack Then ' for simplity's sake we're going to assume that a ' roomId was passed in the query string and that ' it is an integer ' note: in reality you would check if the roomId is empty ' and is an integer Dim roomId = Request("roomId").ToString() lblRoomId.Text = roomId Me.GetRoomInformation() Me.GetLoggedInUsers() Me.InsertMessage(ConfigurationManager.AppSettings("ChatLoggedInText") + " " + DateTime.Now.ToString()) Me.GetMessages() ' create a call back reference so we can log-out user when user closes the browser Dim callBackReference As String = Page.ClientScript.GetCallbackEventReference(Me, "arg", "LogOutUser", "") Dim logOutUserCallBackScript As String = "function LogOutUserCallBack(arg, context) { " & callBackReference & "; }" Me.ClientScript.RegisterClientScriptBlock(Me.GetType(), "LogOutUserCallBack", logOutUserCallBackScript, True) End If End Sub Private Sub GetRoomInformation() ' get the room information from the database ' we() 're going to set this up so that we can use ' many rooms if we want to Dim db As LinqChatDataContext = New LinqChatDataContext() Dim room = (From r In db.Rooms _ Where r.RoomID = Convert.ToInt32(lblRoomId.Text) _ Select r).SingleOrDefault() lblRoomName.Text = room.Name End Sub Private Sub GetLoggedInUsers() Dim db As LinqChatDataContext = New LinqChatDataContext() ' let's check if this authenticated user exist in the ' LoggedInUser table (means user is logged-in to this room) Dim user = (From u In db.LoggedInUsers _ Where u.UserID = Convert.ToInt32(Session("ChatUserID")) _ And u.RoomID = Convert.ToInt32(lblRoomId.Text) _ Select u).SingleOrDefault() ' if user does not exist in the LoggedInUser table ' then let's add/insert the user to the table If user Is Nothing Then Dim loggedInUser As LoggedInUser = New LoggedInUser() loggedInUser.UserID = Convert.ToInt32(Session("ChatUserID")) loggedInUser.RoomID = Convert.ToInt32(lblRoomId.Text) db.LoggedInUsers.InsertOnSubmit(loggedInUser) db.SubmitChanges() End If Dim userIcon As String Dim sb As StringBuilder = New StringBuilder() ' get all logged in users to this room Dim loggedInUsers = From l In db.LoggedInUsers _ Where l.RoomID = Convert.ToInt32(lblRoomId.Text) _ Select l For Each loggedInUser In loggedInUsers ' show user icon based on sex If loggedInUser.User.Sex.ToString().ToLower() = "m" Then userIcon = "<img src='Images/manIcon.gif' style='vertical-align:middle' alt=''> " Else userIcon = "<img src='Images/womanIcon.gif' style='vertical-align:middle' alt=''> " End If If (Not loggedInUser.User.Username = Session("ChatUsername").ToString()) Then sb.Append(userIcon + "<a href="#">" + loggedInUser.User.Username + "</a><br>") Else sb.Append(userIcon + "" + loggedInUser.User.Username + "<br>") End If Next ' holds the names of the users shown in the chatroom litUsers.Text = sb.ToString() End Sub ''' <summary> ''' This will insert the passed text to the message table in the database ''' </summary> Private Sub InsertMessage(ByVal text As String) Dim db As LinqChatDataContext = New LinqChatDataContext() Dim message As Message = New Message() message.RoomID = Convert.ToInt32(lblRoomId.Text) message.UserID = Convert.ToInt32(Session("ChatUserID")) If String.IsNullOrEmpty(text) Then message.Text = txtMessage.Text.Replace("<", "") message.Color = ddlColor.SelectedValue Else message.Text = text message.Color = "gray" End If message.ToUserID = Nothing ' in the future, we will use this value for private messages message.TimeStamp = DateTime.Now db.Messages.InsertOnSubmit(message) db.SubmitChanges() End Sub ''' <summary> ''' Get the last 20 messages for this room ''' </summary> Private Sub GetMessages() Dim db As LinqChatDataContext = New LinqChatDataContext() Dim messages = (From m In db.Messages _ Where m.RoomID = Convert.ToInt32(lblRoomId.Text) _ Order By m.TimeStamp Descending _ Select m).Take(20).OrderBy(Function(m As Message) m.TimeStamp) 'Select m).Take(20).OrderBy(m >= m.TimeStamp) If Not messages Is Nothing Then Dim sb As StringBuilder = New StringBuilder() Dim ctr As Integer = 0 ' toggle counter for alternating color For Each message In messages ' alternate background color on messages If ctr = 0 Then sb.Append("<div style="padding: 10px;">") ctr = 1 Else sb.Append("<div style="background-color: #EFEFEF; padding: 10px;">") ctr = 0 End If If message.User.Sex.ToString().ToLower() = "m" Then sb.Append("<img src='Images/manIcon.gif' style='vertical-align:middle' alt=''> " + message.Text + "</div>") Else sb.Append("<img src='Images/womanIcon.gif' style='vertical-align:middle' alt=''> " + message.Text + "</div>") End If Next litMessages.Text = sb.ToString() End If End Sub Protected Sub BtnSend_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSend.Click If txtMessage.Text.Length > 0 Then Me.InsertMessage(Nothing) Me.GetMessages() txtMessage.Text = String.Empty ScriptManager1.SetFocus(txtMessage.ClientID) End If End Sub Protected Sub Timer1_OnTick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick Me.GetLoggedInUsers() Me.GetMessages() If Session("IsChatroomInFocus") Is Nothing Then ScriptManager1.SetFocus(txtMessage) End If End Sub Protected Sub BtnLogOut_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnLogOut.Click ' log out the user by deleting from the LoggedInUser table Dim db As LinqChatDataContext = New LinqChatDataContext() Dim loggedInUser = (From l In db.LoggedInUsers _ Where l.UserID = Convert.ToInt32(Session("ChatUserID")) _ And l.RoomID = Convert.ToInt32(lblRoomId.Text) _ Select l).SingleOrDefault() db.LoggedInUsers.DeleteOnSubmit(loggedInUser) db.SubmitChanges() ' insert a message that this user has logged out Me.InsertMessage("Just logged out! " + DateTime.Now.ToString()) ' clean the session Session.RemoveAll() Session.Abandon() ' redirect the user to the login page Response.Redirect("Default.aspx") End Sub Public Function GetCallbackResult() As String Implements System.Web.UI.ICallbackEventHandler.GetCallbackResult Return _callBackStatus End Function Public Sub RaiseCallbackEvent(ByVal eventArgument As String) Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent _callBackStatus = "failed" ' log out the user by deleting from the LoggedInUser table Dim db As LinqChatDataContext = New LinqChatDataContext() Dim loggedInUser = (From l In db.LoggedInUsers _ Where l.UserID = Convert.ToInt32(Session("ChatUserID")) _ And l.RoomID = Convert.ToInt32(lblRoomId.Text) _ Select l).SingleOrDefault() db.LoggedInUsers.DeleteOnSubmit(loggedInUser) db.SubmitChanges() ' insert a message that this user has logged out Me.InsertMessage("Just logged out! " + DateTime.Now.ToString()) _callBackStatus = "success" End Sub End Class </br></br>

更多推荐

在即时消息方面需要帮助

本文发布于:2023-08-01 20:19:28,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1271379.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:即时消息

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!