Здравствуйте. Пытаюсь понять взаимодействие метода с# и функции 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
происходит при первой отправке сообщения. В связи с этим, вы не увидите ни одного входящего сообщения, пока не отправите в чат что-нибудь сами.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Я пытаюсь подключить свой довольно большой json-файл и вывести из него информацию в react, но получаю ошибкуmap is not a function
Делаю меню на jQuery UIКак сделать, чтобы все подпункты были сверху на одной линии?