Temporary websocket
This commit is contained in:
parent
1e3fc868a7
commit
e351cb5c46
@ -3,16 +3,22 @@ package server
|
||||
import (
|
||||
"flag"
|
||||
pb "git.loafle.net/overflow/overflow_api_service/grpc"
|
||||
ws "git.loafle.net/overflow/overflow_api_service/ws"
|
||||
"github.com/golang/glog"
|
||||
"github.com/grpc-ecosystem/grpc-gateway/runtime"
|
||||
"golang.org/x/net/context"
|
||||
"google.golang.org/grpc"
|
||||
"net/http"
|
||||
"strings"
|
||||
"github.com/tmc/grpc-websocket-proxy/wsproxy"
|
||||
"log"
|
||||
"net"
|
||||
)
|
||||
|
||||
var (
|
||||
overflowEndpoint = flag.String("echo_endpoint", ":9090", "/v1/overflow/services")
|
||||
grpcAddr = flag.String("grpcaddr", ":8001", "listen grpc addr")
|
||||
httpAddr = flag.String("addr", ":8000", "listen http addr")
|
||||
)
|
||||
|
||||
func RunGwRpc() (err error) {
|
||||
@ -20,16 +26,42 @@ func RunGwRpc() (err error) {
|
||||
ctx, cancel := context.WithCancel(ctx)
|
||||
defer cancel()
|
||||
|
||||
if err := listenGRPC(*grpcAddr); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
mux := runtime.NewServeMux()
|
||||
opts := []grpc.DialOption{grpc.WithInsecure()}
|
||||
|
||||
err = pb.RegisterOverflowGatewayHandlerFromEndpoint(ctx, mux, *overflowEndpoint, opts)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = ws.RegisterWebSocketServiceHandlerFromEndpoint(ctx, mux, *grpcAddr, opts)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
http.ListenAndServe(*httpAddr, wsproxy.WebsocketProxy(mux))
|
||||
|
||||
return http.ListenAndServe(":8080", wsproxy.WebsocketProxy(allowCORS(mux)))
|
||||
}
|
||||
|
||||
func listenGRPC(listenAddr string) error {
|
||||
lis, err := net.Listen("tcp", listenAddr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
grpcServer := grpc.NewServer()
|
||||
ws.RegisterWebSocketServiceServer(grpcServer, &Server{})
|
||||
|
||||
go func() {
|
||||
if err := grpcServer.Serve(lis); err != nil {
|
||||
log.Println("serveGRPC err:", err)
|
||||
}
|
||||
}()
|
||||
return nil
|
||||
|
||||
return http.ListenAndServe(":8080", allowCORS(mux))
|
||||
}
|
||||
|
||||
//https://github.com/grpc-ecosystem/grpc-gateway/blob/master/examples/main.go
|
||||
|
78
server/ws_server.go
Normal file
78
server/ws_server.go
Normal file
@ -0,0 +1,78 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
ws "git.loafle.net/overflow/overflow_api_service/ws"
|
||||
"log"
|
||||
)
|
||||
|
||||
type Server struct{}
|
||||
|
||||
|
||||
func (s *Server) Test(srv ws.WebSocketService_TestServer) error {
|
||||
for {
|
||||
req, err := srv.Recv()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if req.GetMsgType() == "onConnection" {
|
||||
onConnection(req)
|
||||
}
|
||||
|
||||
if err := srv.Send(&ws.WSResponse{
|
||||
Msg: req.Msg + "!",
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
func onConnection(req *ws.WSRequest) {
|
||||
log.Println("UserID: ", req.GetUserId())
|
||||
}
|
||||
|
||||
//
|
||||
//func (s *Server) Stream(_ *echoserver.Empty, stream echoserver.EchoService_StreamServer) error {
|
||||
// start := time.Now()
|
||||
// for i := 0; i < 5; i++ {
|
||||
// time.Sleep(time.Second)
|
||||
// if err := stream.Send(&echoserver.EchoResponse{
|
||||
// Message: "hello there!" + fmt.Sprint(time.Now().Sub(start)),
|
||||
// }); err != nil {
|
||||
// return err
|
||||
// }
|
||||
// }
|
||||
// return nil
|
||||
//}
|
||||
//
|
||||
//
|
||||
//func (s *Server) Heartbeats(srv echoserver.EchoService_HeartbeatsServer) error {
|
||||
// go func() {
|
||||
// for {
|
||||
// _, err := srv.Recv()
|
||||
// if err != nil {
|
||||
// log.Println("Recv() err:", err)
|
||||
// return
|
||||
// }
|
||||
// log.Println("got hb from client")
|
||||
// }
|
||||
// }()
|
||||
// t := time.NewTicker(time.Second * 1)
|
||||
// for {
|
||||
// log.Println("sending hb")
|
||||
// hb := &echoserver.Heartbeat{
|
||||
// Status: echoserver.Heartbeat_OK,
|
||||
// }
|
||||
// b := new(bytes.Buffer)
|
||||
// if err := (&jsonpb.Marshaler{}).Marshal(b, hb); err != nil {
|
||||
// log.Println("marshal err:", err)
|
||||
// }
|
||||
// log.Println(string(b.Bytes()))
|
||||
// if err := srv.Send(hb); err != nil {
|
||||
// return err
|
||||
// }
|
||||
// <-t.C
|
||||
// }
|
||||
// return nil
|
||||
//}
|
Loading…
x
Reference in New Issue
Block a user