کار با SignalR Core از طریق یک کلاینت جاوا اسکریپتی
نویسنده: وحید نصیری
تاریخ: ۱۳۹۶/۰۶/۲۸ ۱۲:۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
npm install @aspnet/signalr-client --save
npm init npm install @aspnet/signalr-client --save bower install
[
{
"outputFileName": "wwwroot/css/site.min.css",
"inputFiles": [
"wwwroot/lib/bootstrap/dist/css/bootstrap.min.css",
"wwwroot/css/site.css"
]
},
{
"outputFileName": "wwwroot/js/site.min.js",
"inputFiles": [
"wwwroot/lib/jquery/dist/jquery.min.js",
"wwwroot/lib/bootstrap/dist/js/bootstrap.min.js",
"node_modules/@aspnet/signalr-client/dist/browser/signalr-client-1.0.0-alpha1-final.min.js",
"wwwroot/lib/jquery-validation/dist/jquery.validate.min.js",
"wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js",
"wwwroot/lib/jquery-ajax-unobtrusive/jquery.unobtrusive-ajax.min.js",
"wwwroot/js/site.js"
],
"minify": {
"enabled": false,
"renameLocals": false
},
"sourceMap": false
}
] <link href="~/css/site.min.css" rel="stylesheet" asp-append-version="true" /> <script src="~/js/site.min.js" type="text/javascript" asp-append-version="true"></script>
public class MessageHub : Hub
{
public Task Send(string message)
{
return Clients.All.InvokeAsync("broadcastMessage", message);
}
} <form method="post"
asp-action="Index"
asp-controller="Home"
data-ajax="true"
role="form">
<div class="form-group">
<label label-for="message">Message: </label>
<input id="message" name="message" class="form-control"/>
</div>
<button class="btn btn-primary" type="submit">Send To Home/Index</button>
<button class="btn btn-success" id="sendmessageDirect" type="button">Send To /message hub directly</button>
</form>
<div id="discussion">
</div>
@section Scripts
{
<script type="text/javascript" asp-append-version="true">
$(function() {
var connection = new signalR.HubConnection('/message');
connection.on('broadcastMessage', function (message) {
// Add the message to the page.
var encodedMsg = $('<div />').text(message).html();
$('#discussion').append('<li>' + encodedMsg + '</li>');
});
connection.start().then(function () {
console.log('connected.');
$('#sendmessageDirect').click(function () {
// Call the Send method on the hub.
connection.invoke('send', $('#message').val());
});
});
});
</script>
} dotnet restore npm install npm install -g bower bower install dotnet watch run
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.0-preview1-final" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.1.0-preview1-final" />
<DotNetCliToolReference Include="BundlerMinifier.Core" Version="2.6.362" />
</ItemGroup>
<Target Name="PrecompileScript" BeforeTargets="BeforeBuild">
<Exec Command="dotnet bundle" />
</Target>
</Project> app.UseSignalR(routes =>
{
routes.MapHub<MessageHub>(path: "/message");
}); await _messageHubContext.Clients.All.SendAsync("broadcastMessage", message); return Clients.All.SendAsync("broadcastMessage", message); npm install @aspnet/signalr
node_modules/@aspnet/signalr/dist/browser/signalr.min.js
connection.send('send', $('#message').val()); const connection = new signalR.HubConnectionBuilder()
.withUrl("/chatHub")
.configureLogging(signalR.LogLevel.Information)
.build(); npm install @aspnet/signalr --save
var connection = new signalR.HubConnectionBuilder().withUrl('/message').build(); // Old code:
app.UseSignalR(routes =>
{
routes.MapHub<SomeHub>("/path");
});
// New code:
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<SomeHub>("/path");
}); npm install @microsoft/signalr --save