-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNote.txt
83 lines (68 loc) · 3.3 KB
/
Note.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
### Handle delete mongoose
User: (posts: [], saved_posts: [], tagged_posts: [])
1: deleteMany Token(user)
deleteMany Post(author)
deleteMany Comment(author)
deleteMany Reply(author)
updateMany User(pull: followers, followings)
updateMany Post(pull: tags, likes)
updateMany Comment(pull: likes)
updateMany Reply(pull: likes)
delete user storage
Post: (comments: [])
1,n: deleteMany Comment(post)
updateMany User(pull: posts, saved_posts, tagged_posts, liked_posts)
delete post storage
Comment: (replies: [])
1, n: deleteMany Reply(comment)
updateMany Post(pull: comments)
Reply: (comment)
1: updateMany Comment(pull: replies)
### Users
[
{
"_id": "658b9129e2ef23426b634dfa",
"username": "duydat30122002",
"followers": ["duydat"],
"followings": ["duydat", "phamduydat2002"]
},
{
"_id": "658c16a166180974270152df",
"username": "phamduydat2002",
"followers": ["duydat", "duydat30122002"],
"followings": []
},
{
"_id": "658c343f48713ef4aae284d9",
"username": "duydat",
"followers": ["duydat30122002"],
"followings": ["duydat30122002", "phamduydat2002"]
}
]
*Mutual: {followings: profileUser, followers: user}
profileUser (params.id) - user (payload.id)
phamduydat2002 - duydat30122002
duydat
### Luồng socket
Connect -> user join UserRoom, user join ConversationRooms
Create Conversation -> All members in conversation join ConversationRoom
Send Message -> emit to other members in conversation
### Socket
#io
io là một đối tượng đại diện cho toàn bộ server Socket.io. Nó được tạo ra khi bạn khởi tạo một instance của Socket.io trên server. io cung cấp các phương thức để quản lý kết nối từ các client, tạo và quản lý các phòng (rooms), và gửi các sự kiện đến các client.
#Các phương thức chính của io
io.on(event, callback): Lắng nghe các sự kiện toàn cục, chẳng hạn như khi một client kết nối.
io.emit(event, data): Gửi sự kiện đến tất cả các client được kết nối.
io.to(room).emit(event, data): Gửi sự kiện đến tất cả các client trong một phòng cụ thể.
io.in(room1).socketsJoin(room2): Tất cả socket trong room1 tham gia vào room2
#socket
socket đại diện cho một kết nối cá nhân từ một client đến server. Mỗi khi một client kết nối đến server, một đối tượng socket mới được tạo. socket cung cấp các phương thức để giao tiếp hai chiều với client cụ thể đó, tham gia vào các phòng, và gửi/nhận các sự kiện.
#Các phương thức chính của socket
socket.emit(event, data): Gửi sự kiện và dữ liệu đến chính client này.
socket.on(event, callback): Lắng nghe các sự kiện từ client và thực thi callback khi sự kiện xảy ra.
socket.join(room): Tham gia vào một phòng.
socket.leave(room): Rời khỏi một phòng.
socket.to(room).emit(event, data): Gửi sự kiện và dữ liệu đến tất cả các client khác trong phòng, ngoại trừ chính client này.
#Mối quan hệ giữa io và socket
io là đại diện cho toàn bộ server, quản lý tất cả các kết nối.
socket là đại diện cho một kết nối cụ thể từ một client.