面试题答案
一键面试创建Hub
- 创建Hub类:
在VB项目中,首先创建一个继承自
Microsoft.AspNet.SignalR.Hubs.Hub
的类。例如:
Imports Microsoft.AspNet.SignalR.Hubs
<HubName("MyHub")>
Public Class MyHub
Inherits Hub
Public Sub Send(message As String)
Clients.All.broadcastMessage(Context.ConnectionId, message)
End Sub
End Class
这里创建了一个名为MyHub
的Hub类,包含一个Send
方法,该方法用于向所有客户端广播消息。Context.ConnectionId
获取当前连接的ID。
客户端连接
- 引入SignalR客户端库:
在VB项目中,通过NuGet包管理器安装
Microsoft.AspNet.SignalR.Client
库。 - 连接到Hub:
Imports Microsoft.AspNet.SignalR.Client
Public Class Form1
Private hubConnection As HubConnection
Private myHubProxy As IHubProxy
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
hubConnection = New HubConnection("http://localhost:YourPortNumber")
myHubProxy = hubConnection.CreateHubProxy("MyHub")
myHubProxy.On(Of String, String)("broadcastMessage", Sub(connectionId, message)
'在这里处理接收到的消息
Console.WriteLine($"Connection ID: {connectionId}, Message: {message}")
End Sub)
AddHandler hubConnection.StateChanged, Sub(stateChange)
Console.WriteLine($"State changed to {stateChange.NewState}")
End Sub
hubConnection.Start().Wait()
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
myHubProxy.Invoke("Send", "Hello from client!").Wait()
End Sub
End Class
在上述代码中:
HubConnection
创建一个到SignalR服务器的连接,需要指定服务器地址。CreateHubProxy
创建一个代理,用于与服务器端的Hub进行交互。On
方法用于注册服务器端广播消息时的回调函数。StateChanged
事件用于监控连接状态的变化。Start
方法启动连接。Invoke
方法用于调用服务器端Hub的方法,如Send
方法。