Здравствуйте. Пытаюсь понять взаимодействие метода с# и функции js скрипта.
Js скрипт:
$(function () {
var chat = $.connection.myHub;
$.connection.hub.start().done(function () {
$('#mybutton').click(function () {
var message = 'Hello';
chat.server.send(message);
chat.client.addMessage = function (returnmessage) {
$('#mytext').text(returnMessage);
}
});
});
})
КОД НА С#:
namespace ChatSignal
{
[HubName("myHub")]
public class MyHub : Hub
{
public void Send(string message)
{
Clients.All.addMessage(message);
}
}
}
КОД HTML:
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div id="mytext">
</div>
<button id="mybutton">Click</button>
<script src="~/Scripts/jquery-1.6.4.js"></script>
<script src="~/Scripts/jquery.signalR-2.2.2.js"></script>
<script src="~/signalr/hubs"></script>
<script src="~/Scripts/MyFile.js"></script>
</body>
</html>
Переменную на сервер я получаю...но в скриптовый метод addMessage я её не возвращаю...почему?
Не совсем ясен ваш вопрос. Попробую объяснить, что происходит в данном коде, хотя знатоком упомянутых технологий и не являюсь.
После того как вы установили соединение с сервером:
$.connection.hub.start().done(function () {
вы добавляете обработчик нажатия кнопки отправки сообщения
$('#mybutton').click(function () {
var message = 'Hello';
chat.server.send(message);
....
});
Теперь при нажатии кнопки #mybutton, вы отправляете сообщение hello серверу (chat.server), используя метод send. С серверной стороны имеется одноименный метод, который соответственно и вызывается:
public void Send(string message)
{
Clients.All.addMessage(message);
}
Здесь сервер получил сообщение и отправляет его всем клиентам (Clients.All), методом addMessage. Теперь на стороне всех клиентов должен обработаться js-метод addMessage.
Обработчик данного метода на стороне клиента вы установили (вопрос вызывает только место, где это происходит):
chat.client.addMessage = function (returnmessage) {
$('#mytext').text(returnMessage);
}
И вот когда сервер отправил всем сообщение, вызывается этот обработчик события, который и добавляет строку, полученную от сервера (и ранее принятую им от вас) к #mytext. Этот метод будет срабатывать для всех входящих сообщений чата, в т.ч. от других клиентов.
На этом в общем-то все и заканчивается. Вопрос возникает только к тому, что назначение обработчика chat.client.addMessage происходит при первой отправке сообщения. В связи с этим, вы не увидите ни одного входящего сообщения, пока не отправите в чат что-нибудь сами.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости