#c# #asp.net #signalr
#c# #asp.net #signalr
Вопрос:
Я создал приложение для чата, посмотрев на приведенный здесь пример, но при отправке мультимедиа соединение отключается, а затем оно подключается.Та же проблема существует в примере. Я не смог найти причину проблемы.
Этот код для кнопки вложения.
<span class="upload-btn-wrapper">
<button id="btnFile" class="btn btn-default btn-flat"><i class="glyphicon glyphicon-paperclip"></i></button>
<ajaxToolkit:AsyncFileUpload OnClientUploadComplete="uploadComplete" runat="server" ID="AsyncFileUpload1" ThrobberID="imgLoader" OnUploadedComplete="FileUploadComplete" OnClientUploadStarted="uploadStarted" />
Код позади.
protected void FileUploadComplete(object sender, EventArgs e)
{
string filename = System.IO.Path.GetFileName(AsyncFileUpload1.FileName);
AsyncFileUpload1.SaveAs(Server.MapPath(this.UploadFolderPath) filename);
}
Часть javascript.
function uploadStarted() {
$get("imgDisplay").style.display = "none";
}
function uploadComplete(sender, args) {
var imgDisplay = $get("imgDisplay");
imgDisplay.src = "images/loading.gif";
imgDisplay.style.cssText = "";
var img = new Image();
img.onload = function () {
imgDisplay.style.cssText = "Display:none;";
imgDisplay.src = img.src;
};
imgDisplay.src = "<%# ResolveUrl(UploadFolderPath) %>" args.get_fileName();
var chatHub = $.connection.chatHub;
var userName = $('#hdUserName').val();
var date = GetCurrentDateTime(new Date());
var sizeKB = (args.get_length() / 1024).toFixed(2);
var msg1;
if (IsValidateFile(args.get_fileName())) {
if (IsImageFile(args.get_fileName())) {
msg1 =
....
}
else {
..
}
chatHub.server.sendMessageToAll(userName, msg1, date);
}
imgDisplay.src = '';
}
Мои коды подключения.
public override Task OnConnected()
{
try
{
var connId = Context.ConnectionId;
var user = ent.USERS.Where(u => u.username == IdentityName).FirstOrDefault();
var userModel = new ConnectedUser
{
id = user.userID,
connectionId = connId,
name = user.name,
surname = user.surname,
username = user.username,
currentTicketId = 0
};
_Connections.Add(userModel);
string fullName = user.name " " user.surname;
Clients.Caller.getProfileInfo(user.userID, fullName);
List<string> userInTicketsName = new List<string>();
var userInTickets = GetAllTickets();
foreach (var tickets in userInTickets)
{
userInTicketsName.Add(tickets.name);
}
Clients.OthersInGroups(userInTicketsName).addUser(userModel);
}
catch (Exception ex)
{
Clients.Caller.onError("OnConnected:" ex.Message);
}
return base.OnConnected();
}
public override Task OnDisconnected(bool stopCalled)
{
try
{
var user = _Connections.Where(u => u.username == IdentityName).First();
List<string> userInTicketsName = new List<string>();
var userInTickets = GetAllTickets();
foreach (var tickets in userInTickets)
{
userInTicketsName.Add(tickets.name);
}
//Tell other users to remove you from their list
Clients.OthersInGroups(userInTicketsName).removeUser(user);
_Connections.Remove(user);
}
catch (Exception ex)
{
Clients.Caller.onError("OnDisconnected: " ex.Message);
}
return base.OnDisconnected(stopCalled);
}
public override Task OnReconnected()
{
var user = ent.USERS.Where(u => u.username == IdentityName).FirstOrDefault();
string fullName = user.name " " user.surname;
Clients.Caller.getProfileInfo(user.userID, fullName);
return base.OnReconnected();
}