This plug-in requires Visual Studio and either a C++ code project or a full Unreal Engine source code from GitHub.
This plugin does not support the MessagePack protocol for the moment, only the JSON protocol.
You can use this plug-in as a project plug-in, or an Engine plug-in:
- 
If you use it as a project plug-in, clone this repository into your project's
Pluginsdirectory and compile your game in Visual Studio. A C++ code project is required for this to work. - 
If you use it as an Engine plug-in, clone this repository into the
Engine/Pluginsdirectory and compile your game. Full Unreal Engine source code from GitHub is required for this. 
This plug-in is enabled by default, so no need to enable it in the plug-in browser.
Link the SignalR module to to yours with PublicDependencyModuleNames or PrivateDependencyModuleNames in <YourModule>.build.cs:
PrivateDependencyModuleNames.AddRange(new string[]
{
    "SignalR",
}
);Create a hub connection with the SignalR engine subsystem:
#include "SignalRModule.h"
#include "IHubConnection.h"
TSharedPtr<IHubConnection> Hub = GEngine->GetEngineSubsystem<USignalRSubsystem>()->CreateHubConnection("https://example.com/chathub");Bind an event which is fired when the server call it to the client.
Hub->On(TEXT("EventName")).BindLambda([](const TArray<FSignalRValue>& Arguments)
{
    ...
});Invoke fires an event when the server has finished invoking the method (or an error occurred). In addition, the event
can receive a result from the server method, if the server returns a result.
Hub->Invoke(TEXT("Add"), 1, 1).BindLambda([](const FSignalRInvokeResult& Result)
{
    if (!Result.HasError())
    {
        UE_LOG(LogTemp, Warning, TEXT("The result value is: %d"), Result.AsInt());
    }
});Unlike the Invoke method, the Send method doesn't wait for a response from the server.
Hub->Send(TEXT("Add"), 1, 1);Keep a reference to your connection with a shared pointer. If you don't do this, the connection object will be destroyed and therefore won't work.
Remember that the function IHubConnection::Start is asynchronous. When you send data after calling the function, the connection may not be complete (the data to be sent are kept on hold)
LogSignalR: Error: Negotiate failed with status code 307
Redirections are not yet supported. Use IP address or a domain name without redirection.
You can also disable UseHttpsRedirection() in ASP.NET Core.
The HTTP module does not support self-signed certificates. The dotnet development certificate is not recognized by Unreal.
You can:
- use the HTTP protocol (Disable 
UseHttpsRedirection()in ASP.NET Core) - or disable peer verification in Project Settings > Engine > Network > Verify Peer
 
Please see CONTRIBUTING.md for instructions on how to contribute.
This project is licensed under the MIT License - see the LICENSE.txt file for details.
Copyright (c) 2020-2022 Frozen Storm Interactive, Yoann Potinet
