mirror of
https://github.com/bettercap/bettercap
synced 2025-08-20 05:23:19 -07:00
fix: fixed events buffering, now no event is lost with multiple listeners (fixes #266)
This commit is contained in:
parent
e9fa015962
commit
9f0b4a9502
3 changed files with 25 additions and 21 deletions
|
@ -17,15 +17,14 @@ import (
|
|||
|
||||
type RestAPI struct {
|
||||
session.SessionModule
|
||||
server *http.Server
|
||||
username string
|
||||
password string
|
||||
certFile string
|
||||
keyFile string
|
||||
useWebsocket bool
|
||||
upgrader websocket.Upgrader
|
||||
eventListener <-chan session.Event
|
||||
quit chan bool
|
||||
server *http.Server
|
||||
username string
|
||||
password string
|
||||
certFile string
|
||||
keyFile string
|
||||
useWebsocket bool
|
||||
upgrader websocket.Upgrader
|
||||
quit chan bool
|
||||
}
|
||||
|
||||
func NewRestAPI(s *session.Session) *RestAPI {
|
||||
|
@ -34,7 +33,6 @@ func NewRestAPI(s *session.Session) *RestAPI {
|
|||
server: &http.Server{},
|
||||
quit: make(chan bool),
|
||||
useWebsocket: false,
|
||||
eventListener: s.Events.Listen(),
|
||||
upgrader: websocket.Upgrader{
|
||||
ReadBufferSize: 1024,
|
||||
WriteBufferSize: 1024,
|
||||
|
|
|
@ -68,6 +68,8 @@ func (api *RestAPI) streamWriter(ws *websocket.Conn, w http.ResponseWriter, r *h
|
|||
log.Debug("Listening for events and streaming to ws endpoint ...")
|
||||
|
||||
pingTicker := time.NewTicker(pingPeriod)
|
||||
listener := session.I.Events.Listen()
|
||||
defer session.I.Events.Unlisten(listener)
|
||||
|
||||
for {
|
||||
select {
|
||||
|
@ -75,7 +77,7 @@ func (api *RestAPI) streamWriter(ws *websocket.Conn, w http.ResponseWriter, r *h
|
|||
if err := api.sendPing(ws); err != nil {
|
||||
return
|
||||
}
|
||||
case event := <-api.eventListener:
|
||||
case event := <-listener:
|
||||
if err := api.streamEvent(ws, event); err != nil {
|
||||
return
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue