私のチャットアプリケーションプロジェクトでは、新しいユーザーがサーバーに接続するたびに、すべてのユーザーにユーザー名をブロードキャストしようとしています。ユーザーがサーバーを離れるたびにユーザー名を削除します。以下は私がチュートリアルを通して試したコードです。file.js
(目的の出力が表示されていないファイルを確認してください)
Chat.cs(作業中)->SignalRの「Hub」クラスを実装します
public class Chat : Hub
{
/* showing only related content */
static ConcurrentDictionary<string, User> _users = new ConcurrentDictionary<string, User>();
public override Task OnDisconnected()
{
var user = _users[Context.ConnectionId]; //user as ConnectionId
User removedUser; //new class object
_users.TryRemove(Context.ConnectionId, out removedUser);
return Clients.All.leave(user, DateTime.Now.ToString()); //dynamic expression
}
public void Joined()
{
User user = new User(Context.ConnectionId, Clients.Caller.username);
_users.TryAdd(user.ConnectionID, user);
Clients.All.joins(user.ConnectionID, user.Name, DateTime.Now); //dynamic expression
}
}
User.cs(作業中)
public class User
{
public User(string ConnID, string Username)
{
Name = Username;
ConnectionID = ConnID;
}
public string Name { get; set; }
public string ConnectionID { get; set; }
}
file.js(機能していません)
var chatUsername = window.prompt("Enter Username:", ""); //username
var chat = $.connection.chat; //connection
//
chat.client.joins = function (ConnectionId, name, Date) {
ConnectionId = 1; /* given value to just test */
name = chatUsername;
};
chat.client.leave = function (user, date) {
user = ""; //making the string empty so that the disconnected user value will be lost.
};
//Here is the connection which calls the "Joined" function of the server (Chat.cs)
上記のように目的の結果が得られるように、file.js
関数(結合および脱退)に何を書き込む必要がありますか。ここで質問する前に、私は同じことをしているが、含めたくない追加のjavascriptファイル(knockout.jsとjson)を含むこのサイトを調べました(bcos私はjqueryを初めて使用します)。