Commit graph

178 commits

Author SHA1 Message Date
legolord208
7bb0965a6f Updated to v6 (fixes #408) (#410)
* Updated to v6

* Unified websocket and REST version
2017-07-22 06:17:39 -07:00
Erik McClure
71ede90b56 Fix #406: reconnect() can be called while still connected (#407) 2017-07-18 18:21:45 -07:00
Erik McClure
bb4b96e26d Add heartbeat ACK response and error handling (#396)
* Add heartbeat ACK response and error handling

- Error when sending a heartbeat now triggers a reconnection
- Op7 now triggers a reconnection
- Session now tracks the last heartbeat ACK that was recieved. If the
last ACK is more than FailedHeartbeatAcks*heartbeatinterval in the past,
this is treated as a dead connection and a reconnection is forced.

* Address @iopred comments
2017-06-27 20:52:59 -07:00
legolord208
aa3973f956 Made error constants (Fixed #315) (#377) 2017-05-08 06:48:19 -07:00
Lukas
edd6e169fa Track voice-channel movements (#317) 2017-02-11 22:18:19 -08:00
jonas747
b07d1c4621 Fix leaking tickers (#314) 2017-01-23 12:13:59 -08:00
jonas747
bdb31f245d Fix all found race conditions, and dont send on nil channel (#307) 2017-01-10 20:01:47 -08:00
jonas747
2d50fc197f Fix racey heartbeat sequence (#303)
* Fix racey heartbeat sequence

* Change all sequence fields to int64
2016-12-28 11:59:02 -08:00
Kristian Klausen
b377944b97 Switch to V5 gateway (#300)
This switch the gateway to V5, and change the heartbeat logic to
get the heartbeat_interval from the new Hello opcode instant of
READY/RESUME event.
See: https://github.com/hammerandchisel/discord-api-docs/issues/18

Fix: #220
2016-12-25 16:22:14 -08:00
Bruce Marriner
9e777a083b Linting. 2016-12-11 12:45:34 -06:00
Chris Rhodes
36601253a4 Remove use of reflect.
This introduces gogenerate'ed EventHandlers from the files in events.go

This also adds support for AddHandlerOnce.
2016-12-03 23:31:07 -08:00
Chris Rhodes
c352d7016c Clean up ordering of internal handlers. (#285) 2016-11-12 11:50:06 -08:00
Chris Rhodes
3e7c0435bc Reduce severity of wsConn close error logging. 2016-11-05 00:16:15 -07:00
Chris Rhodes
c6ee0d2dd5 Clean up state access. (#261)
Clean up state access.
2016-09-27 22:45:12 -07:00
Chris Rhodes
b71136ac14 Merge pull request #259 from b1naryth1ef/bugfix/voice-state-update-api-usage
Remove API call in onVoiceStateUpdate
2016-09-27 22:35:56 -07:00
Chris Rhodes
2e2e02fc11 Support a very light state in all cases to support b1nzy's upcoming PR (#260)
Support a very light state in all cases to support b1nzy's upcoming PR
2016-09-27 22:09:44 -07:00
jonas747
1dcdf130fd Fix Another typo 2016-09-28 07:00:11 +02:00
jonas747
1ecb7458e9 Fix typos 2016-09-28 06:31:39 +02:00
andrei
1edd3b6484 Remove API call in onVoiceStateUpdate 2016-09-27 17:39:14 -07:00
jonas747
9c7c9d3fd2 Added RequestGuildMembers to request guild members from the gateway 2016-09-25 21:29:59 +02:00
Bruce Marriner
bbce2612b0 simi-properly close websockets and simplify voice reconnect 2016-07-06 20:31:47 -05:00
Bruce Marriner
ad91025f59 Don't delete VoiceConnections
But, don't add a VoiceConnection either if we don't successfully
connect.
2016-07-05 20:51:52 -05:00
Bruce Marriner
fb663ac348 Linting 2016-06-17 15:44:01 -05:00
Bruce Marriner
11f11de41c Protect writes to DataReady with mutex lock 2016-06-17 14:23:19 -05:00
Bruce Marriner
face6df4b6 Do not call session onEvent as goroutine
This is a stability improvement but may have a slight performance
impact. This change will be reviewed again later.  Doing this solves a
data race issue with the Sequence number that must be tracked for
gateway resume and heartbeats.  Event specific handlers are now called
as a goroutine though.
2016-06-17 12:24:32 -05:00
Bruce Marriner
e451cb36c3 Clear SessionID when reconnecting voice
Also added some more logging..
2016-06-17 10:24:15 -05:00
Bruce Marriner
9dc51d1c49 Only Shard when ShardCount > 1
Also cleaned up identify sending so there's now a function that handles
it instead of duplicate code.  Renamed handshake* structs to identify*
structs to make naming match up.
2016-06-14 13:45:38 -05:00
Bruce Marriner
d03b3eedfa Merge branch 'feature/sharding' of https://github.com/b1naryth1ef/discordgo into b1naryth1ef-feature/sharding 2016-06-14 11:45:59 -05:00
Bruce Marriner
c32de41481 Force Voice reconnect on gateway reconnects
Also did a bit of clean up.
2016-06-14 10:55:20 -05:00
andrei
835a23a89d Implement guild sharding 2016-06-13 15:34:40 -07:00
Bruce Marriner
af201919a0 Move logging 2016-05-28 15:10:55 -05:00
Bruce Marriner
ff0a39b9b5 Clean up. 2016-05-28 14:32:22 -05:00
Bruce Marriner
754d64d339 Initial code to support voice reconnecting
Also includes some logging improvements and a small fix to track
speaking state and to send speaking packet if needed before sending
opus packets.
2016-05-26 19:35:17 -05:00
Bruce
942d3a8b66 Merge pull request #194 from iopred/status
Support streaming status updates.
2016-05-14 13:53:49 -05:00
Chris Rhodes
a8ecc78c34 Don't break the API. 2016-05-14 09:50:37 -07:00
Bruce Marriner
a00f64aa86 Don't stomp on VoiceConnection if exists already
This allows you to enable voice debugging prior to joining a voice
channel.
2016-05-12 19:23:38 -05:00
Chris Rhodes
80c2158605 Support streaming status updates. 2016-05-06 15:23:21 -07:00
Bruce Marriner
6a4b8bb287 Fixed it! 2016-05-01 19:55:57 -05:00
Bruce Marriner
cb9e30670f no concurrent writes to voice ws, log cleanup 2016-05-01 19:54:28 -05:00
Bruce Marriner
5dc57e19c7 Display gateway url in error 2016-05-01 18:16:55 -05:00
Bruce Marriner
a9da8a5daf Cleanup, Logging, Finished Resumed code. 2016-04-30 21:40:13 -05:00
Bruce Marriner
c65d5091ab Fix resume bug! It's op not ip. 2016-04-30 20:29:27 -05:00
Bruce Marriner
9e8cd0a735 misc cleanup 2016-04-30 20:29:10 -05:00
Bruce Marriner
e9e9ef86b3 Prevent concurrent writes to gateway websocket. 2016-04-30 19:11:13 -05:00
Bruce Marriner
9bc6057ca7 partial support for gateway resume 2016-04-30 17:52:09 -05:00
Bruce Marriner
b09ed37294 reconenct with identify packet until resume is fixed. 2016-04-29 14:57:41 -05:00
Bruce Marriner
53a826dd0d Send heartbeat in response to gateway Op 1 message 2016-04-28 22:30:42 -05:00
Bruce Marriner
d557bb24a5 Extra logging for non OP0 events, for now. 2016-04-28 21:50:57 -05:00
Bruce Marriner
f6de2b2c98 gateway, voice, & logging improvements
We now store teh sessionID of the gateway connection for later use. We
are now caching the gateway url and will use it until unable to connect
to that gateway.  We're not longer smashing the VoiceConnections map
during reconnects which was causing Voice problems. Slight change to
log output format.
2016-04-28 21:15:32 -05:00
Bruce Marriner
94770635a9 Event handing improvements.
Corrected the Event struct to match it's new state based on Discord docs
and started tracking sequence number and sending it with heatbeats.
Also, move cleanup and comment improvements.
2016-04-28 16:59:45 -05:00