本文整理汇总了Golang中github.com/desertbit/glue/backend.BackendSocket.OnClose方法的典型用法代码示例。如果您正苦于以下问题:Golang BackendSocket.OnClose方法的具体用法?Golang BackendSocket.OnClose怎么用?Golang BackendSocket.OnClose使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/desertbit/glue/backend.BackendSocket
的用法示例。
在下文中一共展示了BackendSocket.OnClose方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: newSocket
// newSocket creates a new socket and initializes it.
func newSocket(bs backend.BackendSocket) *Socket {
// Create a new socket value.
s := &Socket{
bs: bs,
writeChan: bs.WriteChan(),
readChan: bs.ReadChan(),
finalReadChan: make(chan string, readChanBuffer),
isClosedChan: make(chan struct{}),
pingTimer: time.NewTimer(pingPeriod),
pingTimeout: time.NewTimer(pingResponseTimeout),
}
// Set the event functions.
bs.OnClose(s.onClose)
// Stop the timeout again. It will be started by the ping timer.
s.pingTimeout.Stop()
// Start the loops and handlers in new goroutines.
go s.pingTimeoutHandler()
go s.readLoop()
go s.pingLoop()
return s
}
示例2: newSocket
// newSocket creates a new socket and initializes it.
func newSocket(bs backend.BackendSocket) *Socket {
// Create a new socket value.
s := &Socket{
bs: bs,
writeChan: bs.WriteChan(),
readChan: bs.ReadChan(),
// Set a dummy function to not always
// check if the method is not set.
onRead: func(string) {},
pingTimer: time.NewTimer(pingPeriod),
pingTimeout: time.NewTimer(pingResponseTimeout),
isClosedChan: make(chan struct{}),
}
// Set the event functions.
bs.OnClose(s.onClose)
// Stop the timeout again. It will be started by the ping timer.
s.pingTimeout.Stop()
// Start the loops and handlers in new goroutines.
go s.pingTimeoutHandler()
go s.readLoop()
go s.pingLoop()
return s
}
示例3: newSocket
// newSocket creates a new socket and initializes it.
func newSocket(bs backend.BackendSocket) *Socket {
// Create a new socket value.
s := &Socket{
id: utils.UUID(),
bs: bs,
channels: newChannels(),
writeChan: bs.WriteChan(),
readChan: bs.ReadChan(),
isClosedChan: make(chan struct{}),
pingTimer: time.NewTimer(pingPeriod),
pingTimeout: time.NewTimer(pingResponseTimeout),
}
// Create the main channel.
s.mainChannel = s.Channel(mainChannelName)
// Set the event functions.
bs.OnClose(s.onClose)
// Stop the timeout again. It will be started by the ping timer.
s.pingTimeout.Stop()
// Start the loops and handlers in new goroutines.
go s.pingTimeoutHandler()
go s.readLoop()
go s.pingLoop()
return s
}
示例4: newSocket
// newSocket creates a new socket and initializes it.
func newSocket(server *Server, bs backend.BackendSocket) *Socket {
// Create a new socket value.
s := &Socket{
server: server,
bs: bs,
id: utils.RandomString(socketIDLength),
channels: newChannels(),
writeChan: bs.WriteChan(),
readChan: bs.ReadChan(),
isClosedChan: make(chan struct{}),
pingTimer: time.NewTimer(pingPeriod),
pingTimeout: time.NewTimer(pingResponseTimeout),
}
// Create the main channel.
s.mainChannel = s.Channel(mainChannelName)
// Set the event functions.
bs.OnClose(s.onClose)
// Stop the timeout again. It will be started by the ping timer.
s.pingTimeout.Stop()
// Add the new socket to the active sockets map.
// If the ID is already present, then generate a new one.
func() {
// Lock the mutex.
s.server.socketsMutex.Lock()
defer s.server.socketsMutex.Unlock()
// Be sure that the ID is unique.
for {
if _, ok := s.server.sockets[s.id]; !ok {
break
}
s.id = utils.RandomString(socketIDLength)
}
// Add the socket to the map.
s.server.sockets[s.id] = s
}()
// Start the loops and handlers in new goroutines.
go s.pingTimeoutHandler()
go s.readLoop()
go s.pingLoop()
return s
}