2012-05-14 17 views
0

Jabberライブラリを使用してGoogleトークでメッセージを送信するテストプロジェクトを作成しました。 agsXMPPを使用してメッセージを正常に送信できるテストプロジェクトが既にあるので、代わりにjabberライブラリを使用するようにこのプロジェクトを模倣したいと思います。ただし、コード実行メッセージ送信コマンドにエラーがなくても、メッセージは送信されません。 OnAuthErrorイベントを入力しなかったため、パスワードがチェックされていないようです。Jabber-netメッセージを送信する(VB.NET)

私のテストプロジェクトは、VB.NET言語を使用したASP.NET Webアプリケーションプロジェクトです。送信者アカウント(txt_Sender)、送​​信者のパスワード(txt_Password)、送信メッセージ(txt_Message)、受信者アカウント(txt_Receiver)、メッセージ送信用ボタン(btn_Send)の4つのテキストボックスがあります。メールアカウント([email protected])を使ってテストし、友人([email protected])にメッセージを送信します。ここに私のVBコードがあります

Imports jabber 
Imports jabber.client 
Imports Microsoft.Win32 
Imports System.Threading 
Imports jabber.protocol.client 
Imports jabber.connection 

Public Class TestSendMsg 
    Inherits System.Web.UI.Page 
    Public done As ManualResetEvent 
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     done = New ManualResetEvent(False) 
    End Sub 

    Private Sub btn_Send_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn_Send.Click 
     Dim jcSender As JabberClient = New JabberClient() 
     Dim jidSender As New jabber.JID(txt_Sender.Text.Trim) 
     With jcSender 
      .User = jidSender.User 
      .Password = txt_Password.Text.Trim 
      .Server = jidSender.Server 
      .AutoReconnect = True 
      .AutoRoster = True 
     End With 
     With jcSender 
      Try 
       AddHandler .OnAuthenticate, New bedrock.ObjectHandler(AddressOf j_OnAuthenticate) 
       'AddHandler .OnAuthenticate, AddressOf j_OnAuthenticate 
       AddHandler .OnPresence, AddressOf j_OnPresence 
       AddHandler .OnBeforePresenceOut, AddressOf j_OnBeforePresenceOut 
       AddHandler .OnAuthError, AddressOf j_OnAuthError 
       AddHandler .OnAfterPresenceOut, AddressOf j_OnAfterPresenceOut 
       .Connect() 
       .Login() 
       .IsAuthenticated = True 
       .Message(txt_Reciever.Text.Trim, txt_Message.Text.Trim) 
      Catch ex As Exception 
       MsgBox(ex.Message) 
      End Try 
      .Close() 
      .Dispose() 
     End With 
    End Sub 

Private Sub j_OnAfterPresenceOut(ByVal sender As Object, ByVal pres As Presence) 
    'Dim j As JabberClient = CType(sender, JabberClient) 
    'j.Message(TARGET, "Registered: " & iq.BaseURI) 
    'done.Set() 
End Sub 

Private Sub j_OnAuthError(ByVal sender As Object, ByVal pres As Presence) 
    'Dim j As JabberClient = CType(sender, JabberClient) 
    'j.Message(TARGET, "Registered: " & iq.BaseURI) 
    'done.Set() 
End Sub 

Private Sub j_OnBeforePresenceOut(ByVal sender As Object, ByVal pres As Presence) 
    'Dim j As JabberClient = CType(sender, JabberClient) 
    'j.Message(TARGET, "Registered: " & iq.BaseURI) 
    'done.Set() 
End Sub 

Private Sub j_OnPresence(ByVal sender As Object, ByVal pres As Presence) 
    'Dim j As JabberClient = CType(sender, JabberClient) 
    'j.Message(TARGET, "Presence: " & pres.BaseURI) 
    'done.Set() 
End Sub 

Private Sub j_OnAuthenticate(ByVal sender As Object) 
    ' Sender is always the JabberClient. 
    Dim j As JabberClient = CType(sender, JabberClient) 
    j.Message(txt_Reciever.Text.Trim, "Test OnAuthenticate") 
    ' Finished sending. Shut down. 
    done.Set() 
End Sub 

End Class 

答えて

1

メッセージを送信する前にOnAuthenticateを待つ必要があります。

関連する問題