В основном я использую чат SignalR на своем веб-сайте. Я уже могу отправлять сообщения всем подключенным пользователям, и теперь я надеюсь добавить функцию "Кто печатает". Я пытаюсь добавить его в функцию $('#message').keypress
, и он работает, но теперь я не могу отправлять сообщения пользователям.
Что я сделал не так?
После удаления $('# message'). keypress может отправить сообщение
Не удалял $('# message'). keypress не может отправить сообщение
Мой html {
<input type="text" id="message" />
<input type="button" id="sendmessage" value="Send" class="btn btn-default" />
<input type="hidden" id="displayname" />
<label id="isTyping" />
<ul id="discussion"></ul>
}
Ниже script:
<!--SignalR script to update the chat page and send messages.-->
<script type="text/javascript">
$(function () {
// Reference the auto-generated proxy for the hub.
var chat = $.connection.chatHub;
// Create a function that the hub can call back to display messages.
chat.client.broadcastMessage = function (name, message) {
$('#discussion').append('<li><strong>' + name
+ '</strong>: ' + message + '</li>');
};
chat.client.sayWhoIsTyping = function (name) {
$('#isTyping').html('<em>' + name + ' is typing...</em>');
setTimeout(function () {
$('#isTyping').html(' ');
}, 5000);
};
// Get the user name and store it to prepend to messages.
$('#displayname').val(prompt('Enter your name:', ''));
// Set initial focus to message input box.
$('#message').focus();
// Start the connection.
$.connection.hub.start().done(function () {
$('#sendmessage').click(function () {
var encodedName = $('<div />').text($('#displayname').val()).html();
var encodedMsg = $('<div />').text($('#message').val()).html();
chat.server.sendPublic(encodedName, encodedMsg);
$('#message').val('').focus();
});
$('#message').keypress(function (e) {
if (e.which == 13) {
var encodedName = $('<div />').text($('#displayname').val()).html();
var encodedMsg = $('<div />').text($('#message').val()).html();
chat.server.sendPublic(encodedName, encodedMsg);
$('#message').val('').focus();
} else {
var encodedName = $('<div />').text($('#displayname').val()).html();
chat.server.isTyping(encodedName);
}
});
});
// This optional function html-encodes messages for display in the page.
function htmlEncode(value) {
var encodedValue = $('<div />').text(value).html();
return encodedValue;
}
Ниже приведен код моего концентратора:
public void SendPublic(string name, string message)
{
// Call the addNewMessageToPage method to update clients
Clients.All.broadcastMessage(name, message);
}
public void IsTyping(string name)
{
SayWhoIsTyping(name);
}
public void SayWhoIsTyping(string name)
{
IHubContext context = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
context.Clients.All.sayWhoIsTyping(name);
}