|
@@ -4,7 +4,7 @@ import (
|
|
|
"encoding/json"
|
|
|
"fmt"
|
|
|
"log"
|
|
|
- "net/http"
|
|
|
+ //"net/http"
|
|
|
qutil "qfw/util"
|
|
|
"qfw/util/redis"
|
|
|
"strings"
|
|
@@ -13,14 +13,9 @@ import (
|
|
|
|
|
|
"github.com/go-xweb/httpsession"
|
|
|
"github.com/go-xweb/xweb"
|
|
|
- "github.com/gorilla/websocket"
|
|
|
+ "golang.org/x/net/websocket"
|
|
|
)
|
|
|
|
|
|
-var upgrader = websocket.Upgrader{
|
|
|
- ReadBufferSize: 1024,
|
|
|
- WriteBufferSize: 1024,
|
|
|
-}
|
|
|
-
|
|
|
//socket对象放在内存中,待rpc回调使用
|
|
|
type Wss struct {
|
|
|
Conn *websocket.Conn
|
|
@@ -100,7 +95,7 @@ func GetWsByCode(param []string) bool {
|
|
|
infoData := LoginInfo(src, openid, wss.Conn.Sess)
|
|
|
log.Println(infoData)
|
|
|
sendmessage, _ := json.Marshal(infoData)
|
|
|
- if err := wss.Conn.WriteMessage(websocket.TextMessage, sendmessage); err != nil {
|
|
|
+ if err := websocket.Message.Send(wss.Conn, sendmessage); err != nil {
|
|
|
log.Println("socket send fail..", err)
|
|
|
return false
|
|
|
} else {
|
|
@@ -146,64 +141,51 @@ func LoginInfo(shareid, openid string, Sess interface{}) (infoData map[string]in
|
|
|
}
|
|
|
|
|
|
//登录关注
|
|
|
-func ServeWss(w http.ResponseWriter, r *http.Request) {
|
|
|
+func ServeWss(conn *websocket.Conn) {
|
|
|
defer qutil.Catch()
|
|
|
- conn, err := upgrader.Upgrade(w, r, nil)
|
|
|
- conn.Sess = xweb.RootApp().SessionManager.Session(r, w)
|
|
|
+ conn.Sess = xweb.RootApp().SessionManager.Session(conn.R, conn.W)
|
|
|
var shareIds string
|
|
|
- if err == nil {
|
|
|
- for {
|
|
|
- _, shareData, err := conn.ReadMessage()
|
|
|
- log.Println("========wait", string(shareData))
|
|
|
- if err != nil {
|
|
|
- //log.Println("前台socket关闭,后台socket断开并退出循环。。。。")
|
|
|
- break
|
|
|
- } else {
|
|
|
- //心跳监测
|
|
|
- if string(shareData) == "HeartBeat" {
|
|
|
- log.Println("send...", string(shareData))
|
|
|
- conn.WriteMessage(websocket.TextMessage, []byte("\"HeartBeat\""))
|
|
|
- continue
|
|
|
- }
|
|
|
- shareIds = string(shareData)
|
|
|
- shareidlist := strings.Split(shareIds, "___")
|
|
|
- if shareIds != "" && len(shareidlist) > 1 {
|
|
|
- shareidnum := shareidlist[0]
|
|
|
- shareidkop := shareidlist[1]
|
|
|
- log.Println(se.DecodeString(shareidnum), se.DecodeString(shareidkop))
|
|
|
- PutWsByCode(se.DecodeString(shareidnum), conn)
|
|
|
- PutWsByCode(se.DecodeString(shareidkop), conn)
|
|
|
- conn.WriteMessage(websocket.TextMessage, []byte("\"ok\""))
|
|
|
- }
|
|
|
+ for {
|
|
|
+ var shareData string
|
|
|
+ err := websocket.Message.Receive(conn, &shareData)
|
|
|
+ if err != nil {
|
|
|
+ //log.Println("前台socket关闭,后台socket断开并退出循环。。。。")
|
|
|
+ break
|
|
|
+ } else {
|
|
|
+ //心跳监测
|
|
|
+ if shareData == "HeartBeat" {
|
|
|
+ log.Println("send...", string(shareData))
|
|
|
+ websocket.Message.Send(conn, "HeartBeat")
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ shareIds = shareData
|
|
|
+ shareidlist := strings.Split(shareIds, "___")
|
|
|
+ if shareIds != "" && len(shareidlist) > 1 {
|
|
|
+ shareidnum := shareidlist[0]
|
|
|
+ shareidkop := shareidlist[1]
|
|
|
+ log.Println(se.DecodeString(shareidnum), se.DecodeString(shareidkop))
|
|
|
+ PutWsByCode(se.DecodeString(shareidnum), conn)
|
|
|
+ PutWsByCode(se.DecodeString(shareidkop), conn)
|
|
|
+ websocket.Message.Send(conn, "ok")
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
//实验室
|
|
|
-func QrToLabWss(w http.ResponseWriter, r *http.Request) {
|
|
|
+func QrToLabWss(conn *websocket.Conn) {
|
|
|
defer qutil.Catch()
|
|
|
- conn, err := upgrader.Upgrade(w, r, nil)
|
|
|
- if err != nil {
|
|
|
- log.Println(err)
|
|
|
- return
|
|
|
- }
|
|
|
- if conn == nil {
|
|
|
- return
|
|
|
- }
|
|
|
var receive, userId string
|
|
|
var qrToLab_ok, qrToLab_open_ok bool
|
|
|
//接收消息
|
|
|
go func() {
|
|
|
defer qutil.Catch()
|
|
|
for {
|
|
|
- //err := websocket.Message.Receive(ws, &receive)
|
|
|
- _, msgData, err := conn.ReadMessage()
|
|
|
- //log.Println(string(msgData), "---msgData---:", msgData)
|
|
|
- receive = string(msgData)
|
|
|
+ err := websocket.Message.Receive(conn, &receive)
|
|
|
if err != nil {
|
|
|
receive = "close"
|
|
|
- //log.Println("websocket接收失败!", err)
|
|
|
+ log.Println("websocket接收失败!", err)
|
|
|
return
|
|
|
}
|
|
|
if receive == "close" {
|
|
@@ -241,7 +223,7 @@ func QrToLabWss(w http.ResponseWriter, r *http.Request) {
|
|
|
continue
|
|
|
}
|
|
|
sendmessage, _ := json.Marshal(reply)
|
|
|
- if err := conn.WriteMessage(websocket.TextMessage, sendmessage); err != nil {
|
|
|
+ if err := websocket.Message.Send(conn, sendmessage); err != nil {
|
|
|
redis.Del("other", "qrToLab_"+userId)
|
|
|
redis.Del("other", "qrToLab_open_"+userId)
|
|
|
//log.Println("websocket发送失败!", err)
|