1

チャットとシステムメッセージシステムにSignalRを使用するMVC3、VB.NET、Razorアプリがあります...チャットは問題なく機能しますが、管理コントローラーにメッセージを送信する機能を追加できるようにしたいと思います。ハブは、Javascriptがビューから呼び出したかのように通常の処理を実行します...ハブは次のように設定されます。

Imports SignalR.Hubs
Imports SignalR

Namespace SingalRTest
 Public Class Chat
    Inherits Hub
    Public Sub Send(ByVal clientName As String, ByVal message As String)
        'Call the addMessage method on all clients.
        Clients.addMessage(clientName, message)
    End Sub

 End Class
End Namespace

単にNEWを使用することを考えましたが、ハブのインスタンスはそのままにしておく必要があるため、うまくいきません。

私がやろうとしていることは次のようなものです:

 Public Function notification(ByVal systemMessage as string)
        Dim y As SingalRTest.Chat = Nothing
        y.Send(User.Identity.Name.ToString, systemMessage)
        Return RedirectToAction("Index", "Admin")
 End Function

これはまったく機能せず、次のようなエラーが発生します。

  Object reference not set to an instance of an Object

y.Send行に到達したとき...

4

1 に答える 1

3

うわー、これはインターネット上で見つけるために多くの掘り下げを要しました。Hubクラスに共有サブを追加する必要がありました。これは次のようになります。

Imports SignalR.Hubs
Imports SignalR

Namespace SingalRTest

Public Class Chat
    Inherits Hub
    Public Sub Send(ByVal clientName As String, ByVal message As String)
        'Call the addMessage method on all clients.
        Clients.addMessage(clientName, message)
    End Sub
    Friend Shared Sub SendMessage(message As String)
        Dim context As IHubContext = GlobalHost.ConnectionManager.GetHubContext(Of Chat)()
        context.Clients.addMessage("System Message", message)
    End Sub
End Class

End Namespace

次に、ウィンドウで通知を送信するときはいつでも、このコードをコントローラー関数にドロップして、すべてのクライアントでaddMessageメソッドを呼び出します。

    SingalRTest.Chat.SendMessage("Testing Only")

多分これは他の誰かを助けるでしょう。

于 2012-08-25T01:30:55.360 に答える