Former-commit-id: 29b1ea2ff313bdaeb719c242e08c5d5c9149156a
This commit is contained in:
Gerasimos (Makis) Maropoulos 2017-02-14 20:32:36 +02:00
parent d2aee5e187
commit 86f34dc5df
2 changed files with 31 additions and 26 deletions

View File

@ -288,6 +288,8 @@ func New(setters ...OptionSetter) *Framework {
}
s.Adapt(EventPolicy{Build: func(*Framework) {
// user has registered routes
if s.Router.repository.Len() > 0 {
// first check if it's not setted already by any Boot event.
if s.Router.handler == nil {
// and most importantly, check if the user has provided a router
@ -308,6 +310,7 @@ func New(setters ...OptionSetter) *Framework {
// buid the router using user's selection build policy
s.Router.build(s.policies.RouterBuilderPolicy)
}
}
}})
}

View File

@ -36,13 +36,14 @@ type (
// NewWebsocketServer returns a new empty unitialized websocket server
// it runs on first OnConnection
func NewWebsocketServer(station *Framework) *WebsocketServer {
return &WebsocketServer{station: station, Server: websocket.New()}
return &WebsocketServer{station: station, Server: websocket.New(), Config: DefaultWebsocketConfiguration()}
}
// NewWebsocketServer creates the client side source route and the route path Endpoint with the correct Handler
// receives the websocket configuration and the iris station
// and returns the websocket server which can be attached to more than one iris station (if needed)
func (ws *WebsocketServer) init() {
if ws.Config.Endpoint == "" {
ws.Config = ws.station.Config.Websocket
}
@ -52,14 +53,6 @@ func (ws *WebsocketServer) init() {
if c.Endpoint == "" {
return
}
// set the routing for client-side source (javascript) (optional)
clientSideLookupName := "iris-websocket-client-side"
ws.station.Get(c.Endpoint, ToHandler(ws.Server.Handler()))
// check if client side already exists
if ws.station.Routes().Lookup(clientSideLookupName) == nil {
// serve the client side on domain:port/iris-ws.js
ws.station.StaticContent("/iris-ws.js", contentJavascript, websocket.ClientSource).ChangeName(clientSideLookupName)
}
if c.CheckOrigin == nil {
c.CheckOrigin = DefaultWebsocketCheckOrigin
@ -85,6 +78,15 @@ func (ws *WebsocketServer) init() {
CheckOrigin: c.CheckOrigin,
IDGenerator: c.IDGenerator,
})
// set the routing for client-side source (javascript) (optional)
clientSideLookupName := "iris-websocket-client-side"
ws.station.Get(c.Endpoint, ToHandler(ws.Server.Handler()))
// check if client side already exists
if ws.station.Routes().Lookup(clientSideLookupName) == nil {
// serve the client side on domain:port/iris-ws.js
ws.station.StaticContent("/iris-ws.js", contentJavascript, websocket.ClientSource).ChangeName(clientSideLookupName)
}
}
// WebsocketConnection is the front-end API that you will use to communicate with the client side