mirror of
https://github.com/kataras/iris.git
synced 2025-02-02 23:40:35 +01:00
This commit is contained in:
parent
d03c9ad231
commit
480f85a9db
|
@ -33,6 +33,10 @@ type Websocket struct {
|
||||||
// MaxMessageSize max message size allowed from connection
|
// MaxMessageSize max message size allowed from connection
|
||||||
// Default value is 1024
|
// Default value is 1024
|
||||||
MaxMessageSize int64
|
MaxMessageSize int64
|
||||||
|
// BinaryMessages set it to true in order to denotes binary data messages instead of utf-8 text
|
||||||
|
// see https://github.com/kataras/iris/issues/387#issuecomment-243006022 for more
|
||||||
|
// defaults to false
|
||||||
|
BinaryMessages bool
|
||||||
// Endpoint is the path which the websocket server will listen for clients/connections
|
// Endpoint is the path which the websocket server will listen for clients/connections
|
||||||
// Default value is empty string, if you don't set it the Websocket server is disabled.
|
// Default value is empty string, if you don't set it the Websocket server is disabled.
|
||||||
Endpoint string
|
Endpoint string
|
||||||
|
@ -52,6 +56,7 @@ func DefaultWebsocket() *Websocket {
|
||||||
PongTimeout: DefaultPongTimeout,
|
PongTimeout: DefaultPongTimeout,
|
||||||
PingPeriod: DefaultPingPeriod,
|
PingPeriod: DefaultPingPeriod,
|
||||||
MaxMessageSize: DefaultMaxMessageSize,
|
MaxMessageSize: DefaultMaxMessageSize,
|
||||||
|
BinaryMessages: false,
|
||||||
ReadBufferSize: 4096,
|
ReadBufferSize: 4096,
|
||||||
WriteBufferSize: 4096,
|
WriteBufferSize: 4096,
|
||||||
Headers: make(map[string]string, 0),
|
Headers: make(map[string]string, 0),
|
||||||
|
|
14
websocket.go
14
websocket.go
|
@ -348,6 +348,7 @@ type (
|
||||||
|
|
||||||
websocketConnection struct {
|
websocketConnection struct {
|
||||||
underline *websocket.Conn
|
underline *websocket.Conn
|
||||||
|
messageType int
|
||||||
id string
|
id string
|
||||||
send chan []byte
|
send chan []byte
|
||||||
onDisconnectListeners []WebsocketDisconnectFunc
|
onDisconnectListeners []WebsocketDisconnectFunc
|
||||||
|
@ -368,6 +369,7 @@ var _ WebsocketConnection = &websocketConnection{}
|
||||||
func newWebsocketConnection(websocketConn *websocket.Conn, s *websocketServer) *websocketConnection {
|
func newWebsocketConnection(websocketConn *websocket.Conn, s *websocketServer) *websocketConnection {
|
||||||
c := &websocketConnection{
|
c := &websocketConnection{
|
||||||
id: utils.RandomString(64),
|
id: utils.RandomString(64),
|
||||||
|
messageType: websocket.TextMessage,
|
||||||
underline: websocketConn,
|
underline: websocketConn,
|
||||||
send: make(chan []byte, 256),
|
send: make(chan []byte, 256),
|
||||||
onDisconnectListeners: make([]WebsocketDisconnectFunc, 0),
|
onDisconnectListeners: make([]WebsocketDisconnectFunc, 0),
|
||||||
|
@ -377,6 +379,11 @@ func newWebsocketConnection(websocketConn *websocket.Conn, s *websocketServer) *
|
||||||
websocketServer: s,
|
websocketServer: s,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// set the messageType to binary if configuration says to
|
||||||
|
if s.config.BinaryMessages {
|
||||||
|
c.messageType = websocket.BinaryMessage
|
||||||
|
}
|
||||||
|
|
||||||
c.self = newWebsocketEmmiter(c, c.id)
|
c.self = newWebsocketEmmiter(c, c.id)
|
||||||
c.broadcast = newWebsocketEmmiter(c, NotMe)
|
c.broadcast = newWebsocketEmmiter(c, NotMe)
|
||||||
c.all = newWebsocketEmmiter(c, All)
|
c.all = newWebsocketEmmiter(c, All)
|
||||||
|
@ -420,7 +427,8 @@ func (c *websocketConnection) writer() {
|
||||||
}
|
}
|
||||||
|
|
||||||
c.underline.SetWriteDeadline(time.Now().Add(c.websocketServer.config.WriteTimeout))
|
c.underline.SetWriteDeadline(time.Now().Add(c.websocketServer.config.WriteTimeout))
|
||||||
res, err := c.underline.NextWriter(websocket.TextMessage)
|
|
||||||
|
res, err := c.underline.NextWriter(c.messageType)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -435,10 +443,6 @@ func (c *websocketConnection) writer() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// if err := c.write(websocket.TextMessage, msg); err != nil {
|
|
||||||
// return
|
|
||||||
// }
|
|
||||||
|
|
||||||
case <-ticker.C:
|
case <-ticker.C:
|
||||||
if err := c.write(websocket.PingMessage, []byte{}); err != nil {
|
if err := c.write(websocket.PingMessage, []byte{}); err != nil {
|
||||||
return
|
return
|
||||||
|
|
Loading…
Reference in New Issue
Block a user