プログラミング言語に移行するには新しいです、私はwebsocketでRedis PubSubを作成する必要があります。パブリッシュとサブスクリプションのために異なるルートにあるRedis PubSubを
マイ参照コードは、以下のライブラリ
"golang.org/x/net/websocket"
「github.com/garyburd/redigoを使用して、ここで https://github.com/vortec/orchestrate
アムです/ redis "
このようにすべてが機能していますが、「websocket.Handler」はわかりません(handleWSConnection)」を参照してください。 /ws-subscribeと/ ws-publishには2つの異なるgoルートが必要です。私はこのコンセプトで何か間違ったことを知らないのですか?
を疑い、私はこの方法、http.HandleFuncを行うことができます( "/ WS"、handleWSConnection)//この方法を試してみましたが、 "handleWSConnectionへの呼び出しではない十分な議論を" 取得しています されていますhandleWSConnection()を通常の関数として呼び出す方法はありません。
任意の提案異なる行くルートとして/ WS-パブリッシュを作成する方法を
次のように、次の完了
main function
func (wsc *WSConnection) ReadWebSocket() {
for {
var json_data []byte
var message WSMessage
// Receive data from WebSocket
err := websocket.Message.Receive(wsc.socket, &json_data)
if err != nil {
return
}
// Parse JSON data
err = json.Unmarshal(json_data, &message)
if err != nil {
return
}
switch message.Action {
case "SUBSCRIBE":
wsc.subscribe.Subscribe(message.Channel)
case "UNSUBSCRIBE":
wsc.subscribe.Unsubscribe(message.Channel)
case "PUBLISH":
wsc.publish.Conn.Do("PUBLISH", message.Channel, message.Data)
}
}
}
func handleWSConnection(socket *websocket.Conn) {
wsc := &WSConnection {socket: socket}
defer wsc.Uninitialize()
wsc.Initialize()
go wsc.ProxyRedisSubscribe()
wsc.ReadWebSocket()
}
func serveWeb() {
http.Handle("/ws", websocket.Handler(handleWSConnection)) // I need to call this route as funciton
if err := http.ListenAndServe(":9000", nil); err != nil {
log.Fatal("ListenAndServe:", err)
}
}