Подключение к концентратору SignalR в Unity3d (для Hololens)
Можно ли подключиться к серверу SignalR с помощью Unity?
Я делаю приложение Hololens (поэтому я создаю приложение для магазина Windows), которое должно взаимодействовать с концентратором SignalR для публикации информации. Этот сервер уже создан, и у меня есть только URI, имя концентратора и конечные точки интерфейса концентратора.
Актуальные вопросы:
1 ответ
Вы можете подключиться из приложения UW для подключения к signalR и использовать мост для связи с приложением Unity:
(Приложение / веб-сервер) мост:
internal class UnityBridge
{
private static UnityBridge _instance;
private UnityBridge()
{
SelectHandler.SelectedHandler = CallExternal;
}
public static UnityBridge Create()
{
return _instance ?? (_instance = new UnityBridge());
}
private void CallExternal(string nameTag)
{
var conn = new HubConnection("http://xxx.azurewebsites.net");
var proxy = conn.CreateHubProxy("MyHub");
conn.Start().Wait();
proxy.Invoke("Send", new EngineerAction {ExecutedAction = nameTag});
}
}
(Приложение / веб-сервер) в вашем App.cs
private AppCallbacks m_AppCallbacks;
private UnityBridge _unityBridge;
public App()
{
m_AppCallbacks = new AppCallbacks();
// Allow clients of this class to append their own callbacks.
AddAppCallbacks(m_AppCallbacks);
}
virtual protected void AddAppCallbacks(AppCallbacks appCallbacks)
{
_unityBridge = UnityBridge.Create();
}
(Игра-клиент / сервер Unity) А в ваших скриптах Unity:
public class SelectHandler : MonoBehaviour
{
public delegate void SelectedHandlerDelegate(string nameTag);
public static SelectedHandlerDelegate SelectedHandler;
....
//call
UnityEngine.WSA.Application.InvokeOnUIThread(() => SelectedHandler("teststring"), false);