|
|
@ -1,6 +1,7 @@ |
|
|
|
package messaging |
|
|
|
|
|
|
|
import ( |
|
|
|
"encoding/json" |
|
|
|
"fmt" |
|
|
|
gorilla_websocket "github.com/gorilla/websocket" |
|
|
|
"github.com/kataras/iris/v12/core/router" |
|
|
@ -32,8 +33,28 @@ func Register(namespaceName string, eventMapping neffos.Events) *Contexts { |
|
|
|
return nil |
|
|
|
} |
|
|
|
eventMapping["login"] = func(connection *neffos.NSConn, message neffos.Message) error { |
|
|
|
fmt.Println("login:" + string(message.Body)) |
|
|
|
contexts.add(connection.Conn.ID(), connection) |
|
|
|
var headers map[string]string |
|
|
|
if err := json.Unmarshal(message.Body, &headers); err != nil { |
|
|
|
panic(err) |
|
|
|
} |
|
|
|
token, ok := headers["token"] |
|
|
|
if !ok { |
|
|
|
jsonText, _ := json.Marshal(map[string]string{"err": "未找到token!"}) |
|
|
|
connection.Emit("onLogin", jsonText) |
|
|
|
return nil |
|
|
|
} |
|
|
|
delete(headers, "token") |
|
|
|
fmt.Println(token) |
|
|
|
id := connection.Conn.ID() // Todo 需要根据 token 解析出 user id
|
|
|
|
if contexts.authenticator != nil { |
|
|
|
var err error |
|
|
|
id, err = contexts.authenticator(headers) |
|
|
|
if err != nil { |
|
|
|
jsonText, _ := json.Marshal(map[string]string{"err": err.Error()}) |
|
|
|
connection.Emit("onLogin", jsonText) |
|
|
|
} |
|
|
|
} |
|
|
|
contexts.add(id, connection) |
|
|
|
connection.Emit("onLogin", []byte{}) |
|
|
|
return nil |
|
|
|
} |
|
|
|