Temporary websocket
This commit is contained in:
parent
1e3fc868a7
commit
e351cb5c46
@ -3,16 +3,22 @@ package server
|
|||||||
import (
|
import (
|
||||||
"flag"
|
"flag"
|
||||||
pb "git.loafle.net/overflow/overflow_api_service/grpc"
|
pb "git.loafle.net/overflow/overflow_api_service/grpc"
|
||||||
|
ws "git.loafle.net/overflow/overflow_api_service/ws"
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
"github.com/grpc-ecosystem/grpc-gateway/runtime"
|
"github.com/grpc-ecosystem/grpc-gateway/runtime"
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
|
"github.com/tmc/grpc-websocket-proxy/wsproxy"
|
||||||
|
"log"
|
||||||
|
"net"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
overflowEndpoint = flag.String("echo_endpoint", ":9090", "/v1/overflow/services")
|
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) {
|
func RunGwRpc() (err error) {
|
||||||
@ -20,16 +26,42 @@ func RunGwRpc() (err error) {
|
|||||||
ctx, cancel := context.WithCancel(ctx)
|
ctx, cancel := context.WithCancel(ctx)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
|
if err := listenGRPC(*grpcAddr); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
mux := runtime.NewServeMux()
|
mux := runtime.NewServeMux()
|
||||||
opts := []grpc.DialOption{grpc.WithInsecure()}
|
opts := []grpc.DialOption{grpc.WithInsecure()}
|
||||||
|
|
||||||
err = pb.RegisterOverflowGatewayHandlerFromEndpoint(ctx, mux, *overflowEndpoint, opts)
|
err = pb.RegisterOverflowGatewayHandlerFromEndpoint(ctx, mux, *overflowEndpoint, opts)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = ws.RegisterWebSocketServiceHandlerFromEndpoint(ctx, mux, *grpcAddr, opts)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
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
|
//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