J'essaie de créer un projet de test SignalR simple; cependant, il ne se comporte pas comme je le crois. J'ai un site web avec le code suivant:Projet de test Signalr ne fonctionne pas comme prévu
namespace SignalRTest3
{
public class MyHub1 : Hub
{
public void Hello(string message)
{
Clients.All.Hello();
}
}
}
Startup.cs:
[assembly: OwinStartupAttribute(typeof(SignalRTest3.Startup))]
namespace SignalRTest3
{
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR();
}
}
}
J'ai changé la page d'index:
<body>
<!-- HTML Content -->
<script type="text/javascript" src="~/Scripts/jquery-1.10.2.min.js"></script>
<script type="text/javascript" src="~/Scripts/jquery.signalR-2.1.2.min.js"></script>
<script type="text/javascript" src="~/signalr/hubs"></script>
<script type="text/javascript" src="~/Scripts/SignalRTest.js"></script>
<div class="jumbotron">
<h1>SignalR Test</h1>
</div>
</body>
Et le fichier JS référencé ci-dessus est :
$(function () {
// Declare a proxy to reference the hub.
var hub = $.connection.MyHub1;
// Create a function that the hub can call to broadcast messages.
hub.client.Hello = function (message) {
alert(message);
};
hub.start();
});
Ainsi, l'intention i s que, lors de la réception d'une notification, le site affichera une alerte. Pour déclencher cela, j'ai une application console:
class Program
{
static void Main(string[] args)
{
Console.Write("Message: ");
string message = Console.ReadLine();
HubConnection connection = new HubConnection("http://localhost:4035/");
IHubProxy hub = connection.CreateHubProxy("MyHub1");
connection.Start().Wait();
hub.Invoke<string>("Hello", message).Wait();
}
}
Je tapez un message, et peut voir que le code dans les feux de moyeu, mais il semble qu'il y ait quelque chose de mal avec le câblage entre le javascript et le moyeu ; s'il vous plaît quelqu'un peut me pointer dans la bonne direction?
EDIT: modifier les signatures de méthode et hub.start
selon la suggestion de JPThorne
EDIT: essayé d'utiliser CORS, mais en vain
Il semble que le problème peut être avec le proxy; Je reçois la sortie suivante dans la fenêtre de la console F12:
Uncaught TypeError: Cannot read property 'MyHub1' of undefined
at HTMLDocument.<anonymous> (VM456 SignalRTest.js:3)
at c (jquery-1.10.2.min.js:21)
at Object.fireWith [as resolveWith] (jquery-1.10.2.min.js:21)
at Function.ready (jquery-1.10.2.min.js:21)
at HTMLDocument.q (jquery-1.10.2.min.js:21) (anonymous) @ VM456 SignalRTest.js:3 c @ jquery-1.10.2.min.js:21 fireWith @ jquery-1.10.2.min.js:21 ready @ jquery-1.10.2.min.js:21 q @ jquery-1.10.2.min.js:21
MISE À JOUR:
Merci à l'aide de JPThorne, j'ai finalement dépisté vers le bas dans le fichier BundleConfig; la mienne ressemblait à ceci:
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.validate*"));
// Use the development version of Modernizr to develop with and learn from. Then, when you're
// ready for production, use the build tool at http://modernizr.com to pick only the tests you need.
bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
"~/Scripts/modernizr-*"));
bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
"~/Scripts/bootstrap.js",
"~/Scripts/respond.js"));
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/bootstrap.css",
"~/Content/site.css"));
mieux que je peux recueillir, l'expression régulière pour {version} sur ~/Scripts/jquery-{version}.js
a également été ramasser les scripts SignalR trop tôt!
Une question rapide, ces deux codes sont dans le même projet ou deux projets différents parce que l'un IMO semble être une application basée sur la console et un autre basé sur le Web. Est-ce correct? – Prabhat
Oui - applications distinctes. Application de console pour envoyer le message et application Web pour l'afficher –
Il est important que vous autorisiez également CORS. Voir https://docs.microsoft.com/en-us/aspnet/signalr/overview/guide-to-the-api/hubs-api-guide-javascript-client – Tester