SignalR
を使用してMVC5
に非常に簡単なチャットアプリケーションを構築しようとしています。オンラインチャットユーザーをsignalrに表示します。ユーザーをリストに追加しますが、削除しません
私はハブクラスの文字列のリストと、要素を追加したり削除したりする簡単な2つのメソッドを作成しました。クライアントを呼び出して、Jquery
を介してユーザーリストを表示します。
ユーザーの追加はうまく機能しますが、リストから削除することはできません。どんな考え?ビュー
<script src="~/Scripts/jquery.signalR-2.2.1.min.js"></script>
<script src="~/signalr/hubs"></script>
<script>
$(function() {
var chat = $.connection.ChatHub;
chat.client.updateUserList = function (users) {
var userList = $("#nameUsers");
userList.empty();
$.each(users, function (i) {
var li = $('<li/>')
.text(users[i])
.appendTo(userList);
});
};
chat.client.connected = function() {
chat.server.addUser("@ViewBag.Username");
};
chat.client.disconnected = function() {
chat.server.removeUser("@ViewBag.Username");
}; ....
で
static List<string> users = new List<string>();
public void AddUser(string name)
{
if (!users.Contains(name))
{
users.Add(name);
Clients.All.updateUserList(users);
}
Clients.All.updateUserList(users);
}
public void RemoveUser(string name)
{
if (users.Contains(name))
{
users.Remove(name);
Clients.All.updateUserList(users);
}
Clients.All.updateUserList(users);
}
public override System.Threading.Tasks.Task OnConnected()
{
Clients.Caller.connected();
return base.OnConnected();
}
public override System.Threading.Tasks.Task OnReconnected()
{
Clients.Caller.connected();
return base.OnReconnected();
}
public override System.Threading.Tasks.Task OnDisconnected(bool stopCalled)
{
Clients.Caller.disconnected();
return base.OnDisconnected(stopCalled);
}
私はViewBag
でMVC
コントローラからユーザー名を取得します。
あなたの迅速な対応に感謝します。私は私の質問を更新しました。これはあなたが意味することですか? 'OnDisconnected'を含めなかったのは、' View'にもあるように私が呼び出すために使用していることが明白だと思ったからです。 – Sugafree