0
페이지에 50 개의 게시물이 있다고 가정 해보십시오. 각 게시물에는 몇 가지 의견이 포함되어 있습니다. 게시물을 클릭하면 댓글이있는 팝업이 나타납니다.signalr 연결된 클라이언트에게 특정 게시물 내에 의견을 보내십시오.
두 명의 사용자가 서버에 연결된 경우 발생합니다. 하나는 포스트 1을 보았고 다른 하나는 포스트 34를 보았고, 각각은 코멘트를 보내고, 코멘트는 교환되었습니다.
특정 포스트 ID가 팝업 창에 주석으로 열리는 경우에만 신호를 다른 사람에게 보낼 수 있습니까? 나는 이것에 초보적이다. 모든 포인터가 수행합니다.
이 내 작업 코드
var viewModel = function() {
var self = this;
self.hub = $.connection.chathub;
self.commenttext = ko.observable();
self.comments = ko.observableArray();
self.commentdate = ko.observable();
self.init = function() {
self.hub.server.getPosts().fail(function(err) {
console.log("connection started");
});
}
self.hub.client.loadPosts = function(data) {
ko.mapping.fromJS(data, {}, self.comments);
}
self.hub.client.newCommentss = function(comment) {
self.comments.push(comment);
}
self.addcomments = function() {
var t = {
"comment": self.commenttext(),
"cardid": 20
};
$.ajax({
url: "@Url.Action("
AddComments ", "
Home ")",
type: "post",
contentType: "application/json",
data: JSON.stringify(t),
success: function(data) {
self.hub.server.addCommentss(t).done(function(comment) {
}).fail(function(err) {
});
}
});
}
};
var vm = new viewModel();
ko.applyBindings(vm);
$.connection.hub.start().done(function() {
vm.init();
});
<div id="div1">
<textarea data-bind="value: commenttext"></textarea><br />
<a href="#" data-bind="click: addcomments" style="margin-bottom:4em">Send</a><br /><br /><br />
<ul data-bind="foreach: comments,visible: comments().length > 0">
<li>
<span data-bind="text:commentdate"></span>
<strong><span data-bind="text: comment"> </span></strong><br /><br />
</li>
</ul>
</div>
이 간단한 솔루션으로 내 chathub
public class chathub : Hub
{
private readonly ApplicationDbContext _context;
public chathub(ApplicationDbContext context)
{
_context = context;
}
public void GetComments(int id)
{
List<CommentsViewModel> commentss= new List<CommentsViewModel>();
var comments = _context.Comments.Where(m => m.cardid == id);
foreach (var item in comments)
{
CommentsViewModel b = new CommentsViewModel();
b.commentid = item.commentid;
b.comment = item.comment;
b.commentdate = item.commentdate;
b.cardid = item.cardid;
commentss.Add(b);
}
Clients.All.loadComments(commentss);
}
public bool addCommentss(Comment newComment)
{
Comment commentobj = new Comment();
commentobj.comment = newComment.comment;
commentobj.commentdate = System.DateTime.Now;
commentobj.cardid = newComment.cardid;
_context.Add(commentobj);
_context.SaveChanges();
Clients.All.newCommentss(commentobj);
return true;
}
public bool removeCommentss(int id)
{
Comment commentobject = _context.Comments.FirstOrDefault(m => m.commentid == id);
if (commentobject != null)
{
_context.Comments.Remove(commentobject);
_context.SaveChanges();
}
// return Json(true);
Clients.All.deleteCommentss(commentobject);
return true;
}
}
에서 사용자 그룹의 더 관리 방법이 link을 따를 수 있습니다. 누군가가 하나의 게시물에 올 때 (덧글 팝업) 그 사람은 해당 게시물에만 관련된 업데이트/푸시/게시를 받게됩니다 –
사용자가 팝업을 열었을 때 연결이 만들어지고 그룹에 사용이 추가됩니까? 그가 팝업을 닫을 때 그는 제거 됐어? – maztt
예. 이것이 바로 문제입니다. 또한 나는 신호기에 별도의 그룹을 만들려면 머리를 쓸 필요가 없다는 것을 기억합니다. –