WIP
This commit is contained in:
24
main.go
24
main.go
@@ -77,7 +77,7 @@ func removePeer(peerID string, peer *Peer) {
|
||||
for userID, peers := range userPeers {
|
||||
delete(peers, peerID)
|
||||
if len(peers) == 0 {
|
||||
delete(userPeers, userID)
|
||||
delete(userPeers, userID) // not safe need mutex
|
||||
}
|
||||
}
|
||||
|
||||
@@ -114,13 +114,13 @@ func handleWebSocket(w http.ResponseWriter, r *http.Request) {
|
||||
for {
|
||||
_, message, err := conn.ReadMessage()
|
||||
if err != nil {
|
||||
log.Println("ReadMessage error:", err)
|
||||
log.Println("ReadMessage error:", err, connectionPeers[conn])
|
||||
break
|
||||
}
|
||||
|
||||
peer.lastActive = time.Now()
|
||||
|
||||
fmt.Println("ws<-", connectionPeers[conn], ":", string(message[:min(80, len(message))]))
|
||||
// fmt.Println("ws<-", connectionPeers[conn], ":", string(message[:min(80, len(message))]))
|
||||
|
||||
response, err := dispatchMessage(message, peer)
|
||||
|
||||
@@ -158,7 +158,7 @@ func writePump(peer *Peer) {
|
||||
return
|
||||
}
|
||||
peer.conn.SetWriteDeadline(time.Now().Add(writeWait))
|
||||
fmt.Println("ws->", connectionPeers[peer.conn], ":", string(message[:min(80, len(message))]))
|
||||
// fmt.Println("ws->", connectionPeers[peer.conn], ":", string(message[:min(80, len(message))]))
|
||||
|
||||
err := peer.conn.WriteMessage(websocket.TextMessage, message)
|
||||
if err != nil {
|
||||
@@ -195,7 +195,9 @@ func handleHello(message []byte, peer *Peer) ([]byte, error) {
|
||||
var m struct {
|
||||
Type string `json:"type"`
|
||||
UserID string `json:"user_id"`
|
||||
UserName string `json:"user_name"`
|
||||
PeerID string `json:"peer_id"`
|
||||
PeerName string `json:"peer_name"`
|
||||
KnownUsers []string `json:"known_users"`
|
||||
}
|
||||
|
||||
@@ -203,7 +205,7 @@ func handleHello(message []byte, peer *Peer) ([]byte, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// log.Printf("Received hello from peer: %s, user:%s", m.PeerID, m.UserID)
|
||||
log.Printf("Received hello from peer %s:%s, user %s:%s", m.PeerID[0:5], m.PeerName, m.UserID[0:5], m.UserName)
|
||||
if userPeers[m.UserID] == nil {
|
||||
userPeers[m.UserID] = make(PeerSet)
|
||||
}
|
||||
@@ -238,10 +240,12 @@ func handlePeerMessage(message []byte, peer *Peer) ([]byte, error) {
|
||||
}
|
||||
|
||||
type PeerMessage struct {
|
||||
Type string `json:"type"`
|
||||
From string `json:"from"`
|
||||
To string `json:"to"`
|
||||
Message InnerMessage `json:"message"`
|
||||
Type string `json:"type"`
|
||||
From string `json:"from"`
|
||||
FromUserName string `json:"from_username"`
|
||||
FromPeerName string `json:"from_peername"`
|
||||
To string `json:"to"`
|
||||
Message InnerMessage `json:"message"`
|
||||
}
|
||||
var m PeerMessage
|
||||
|
||||
@@ -249,7 +253,7 @@ func handlePeerMessage(message []byte, peer *Peer) ([]byte, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
fmt.Printf("peer message type %s from %s to %s with message length %d\n", m.Message.Type, m.From, m.To, len(message))
|
||||
fmt.Printf("peer message type %s from %s:%s:%s to %s with message length %d\n", m.Message.Type, m.From[0:5], m.FromPeerName, m.FromUserName, m.To[0:5], len(message))
|
||||
|
||||
toPeer := peerConnections[m.To]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user