рдпрджрд┐ рдЖрдк jQuery рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ URL рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ SignalR рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ URL рдХреЗ рд╕рд╛рде рднреА рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП
рдЙрддреНрдкрдиреНрди рдкрд░рджреЗ рдХреЗ рдкреАрдЫреЗ рдХреЗ рд╕рд╛рдеред
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдПрдорд╡реАрд╕реА рдЖрдИрдЖрдИрдПрд╕ рдкрд░/(рд░реВрдЯ) рдкрд░ рдРрдк рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИред
рдПрд╕рдПрд╕рдПрд▓ рдПрдХ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ / рдХреЛ / рдЬреЛ рдХреБрдЫ рднреА рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдмреЗрд╢рдХ рд╕рд┐рдЧреНрдирд▓рдЖрд░ рд╕реЛрдЪрддрд╛ рд╣реИ /рд╕рд┐рдЧреНрдирд▓/рд╣рдм рдЗрд╕рд▓рд┐рдП рд╕рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдпрд╣ /рдЬреЛ рднреА/рд╕рд┐рдЧреНрдирд▓/рд╣рдм рд╣реИ
Jquery рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╣рдореЗрд╢рд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рд╛рд░рдВрдн url рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдиреЗ рдХреА рд╕рдХрд╛рд░рд╛рддреНрдордХрддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП
рдХрд┐рд╕реА рднреА рдХреЙрд▓ рдкрд░, рдпрд╛ рдХрдо рд╕реЗ рдХрдо рд╣рдореЗрд╢рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рд╕рд╛рдкреЗрдХреНрд╖ рдпреВрдЖрд░рдПрд▓ рд▓реЗрдВред
jQuery рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдХрдм рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ $.connection.hub.url = "/whatever/signalr/hubs"
рдмрд╛рддрдЪреАрдд HTTP 200 рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ
рдЖрдИрдЖрдИрдПрд╕ рдРрдкрдкреВрд▓ рд╕реЗ рдкреНрд░реЙрдХреНрд╕реА рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдпреВрдЖрд░рдПрд▓ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИред
рддреЛ рдирд┐рдореНрди рдХрдиреЗрдХреНрдЯ 404 рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдм рд╕реЗ рдпреВрдЖрд░рдПрд▓ рд▓реЗрдиреЗ рдХреЗ рдХрд╛рд░рдг/ рдмрд╛рддрдЪреАрдд рдЙрддреНрддрд░ рдЗрд╕ рдЧрд▓рдд рдХреЗ рд▓рд┐рдП
рдХрд┐рд╕реА рднреА рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА (рдЕрдкрд╛рдЪреЗ/nginx/рдЖрджрд┐) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдЖрдИрдЖрдИрдПрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдпреВрдЖрд░рдПрд▓ рдкрд░ рдореИрдк рдХрд░реЗрдВ
рдЖрдИрдЖрдИрдПрд╕ рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдм.рдпреВрдЖрд░рдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
$(function () {
var ip = $.connection.imageProcessor;
var path = "../../signalr";
$.connection.hub.url = path;
//USAGE LIKE $.hubConnection(.(path, { useDefaultPath: false } ?
// FUNCTIONS
ip.client.ping = function () {
console.log("Ping");
};
// EVENTS
$.connection.hub.disconnected(function () {
console.log("Disconnected");
});
$.connection.hub.start().done(function () {
console.log("Started");
});
});
рдореЛрд▓ - рднрд╛рд╡ рдХрд░рдирд╛
рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо
рдХрдиреЗрдХреНрдЯ рдХреЙрд▓ рд░рджреНрдж рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЧрд▓рдд url
рдЧреИрд░ рдЙрддреНрдкрдиреНрди рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд╕рд╛рде рднреА рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛:
var path = "../../signalr";
var connection = $.hubConnection(path, { useDefaultPath: false });
var ip = connection.createHubProxy('imageProcessor');
connection.start(function (d) {
});
рд╕рд░реНрд╡рд░ рдЬрдирд░реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ URL рд╣рдореЗрд╢рд╛ рдЬреАрддрддрд╛ рд╣реИред
рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдлрд┐рдХреНрд╕ :
рд╕реЗ
getUrl: function (connection, transport, reconnecting, poll, ajaxPost) {
/// <summary>Gets the url for making a GET based connect request</summary>
var baseUrl = transport === "webSockets" ? "" : connection.baseUrl,
url = baseUrl + connection.appRelativeUrl,
qs = "transport=" + transport;
if (!ajaxPost && connection.groupsToken) {
qs += "&groupsToken=" + window.encodeURIComponent(connection.groupsToken);
}
рдкрд░рд┐рд╡рд░реНрддрд┐рдд/рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛
getUrl: function (connection, transport, reconnecting, poll, ajaxPost) {
/// <summary>Gets the url for making a GET based connect request</summary>
var baseUrl = transport === "webSockets" ? "" : connection.baseUrl,
url = baseUrl + connection.appRelativeUrl,
qs = "transport=" + transport;
//take my url, if not the same!
if (url != connection.url) {
url = connection.url;
}
if (!ajaxPost && connection.groupsToken) {
qs += "&groupsToken=" + window.encodeURIComponent(connection.groupsToken);
}
рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ / (рд░реВрдЯ) рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛрдиреЗ рдкрд░ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреБрди: рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдЗрд╕рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдмрджрд▓рддреЗ рд╣реИрдВ:
var getUrl = $.signalR.transports._logic.getUrl;
$.signalR.transports._logic.getUrl = function(connection, transport, reconnecting, poll, ajaxPost) {
var url = getUrl(connection, transport, reconnecting, poll, ajaxPost);
return connection.url + url.substring(url.indexOf(connection.appRelativeUrl) + connection.appRelativeUrl.length);
};
https://blogs.msdn.microsoft.com/webdev/2018/09/17/the-future-of-asp-net-signalr/ рдореЗрдВ рдмрддрд╛рдП рдЕрдиреБрд╕рд╛рд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдорд╕реНрдпрд╛ рдХреА рд╕рдлрд╛рдИ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ!
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреБрди: рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдЗрд╕рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдмрджрд▓рддреЗ рд╣реИрдВ: