Added opcode enums
This commit is contained in:
@@ -7,8 +7,21 @@ using System.Threading.Tasks;
|
|||||||
namespace Discord.Net.WebSockets
|
namespace Discord.Net.WebSockets
|
||||||
{
|
{
|
||||||
internal partial class DataWebSocket : WebSocket
|
internal partial class DataWebSocket : WebSocket
|
||||||
{
|
{
|
||||||
private int _lastSeq;
|
public enum OpCodes : byte
|
||||||
|
{
|
||||||
|
Dispatch = 0,
|
||||||
|
Heartbeat = 1,
|
||||||
|
Identify = 2,
|
||||||
|
StatusUpdate = 3,
|
||||||
|
VoiceStateUpdate = 4,
|
||||||
|
VoiceServerPing = 5,
|
||||||
|
Resume = 6,
|
||||||
|
Redirect = 7,
|
||||||
|
RequestGuildMembers = 8
|
||||||
|
}
|
||||||
|
|
||||||
|
private int _lastSeq;
|
||||||
|
|
||||||
public string SessionId => _sessionId;
|
public string SessionId => _sessionId;
|
||||||
private string _sessionId;
|
private string _sessionId;
|
||||||
@@ -75,9 +88,10 @@ namespace Discord.Net.WebSockets
|
|||||||
if (msg.Sequence.HasValue)
|
if (msg.Sequence.HasValue)
|
||||||
_lastSeq = msg.Sequence.Value;
|
_lastSeq = msg.Sequence.Value;
|
||||||
|
|
||||||
switch (msg.Operation)
|
var opCode = (OpCodes)msg.Operation;
|
||||||
|
switch (opCode)
|
||||||
{
|
{
|
||||||
case 0:
|
case OpCodes.Dispatch:
|
||||||
{
|
{
|
||||||
JToken token = msg.Payload as JToken;
|
JToken token = msg.Payload as JToken;
|
||||||
if (msg.Type == "READY")
|
if (msg.Type == "READY")
|
||||||
@@ -96,7 +110,7 @@ namespace Discord.Net.WebSockets
|
|||||||
EndConnect();
|
EndConnect();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 7: //Redirect
|
case OpCodes.Redirect:
|
||||||
{
|
{
|
||||||
var payload = (msg.Payload as JToken).ToObject<RedirectEvent>(_client.DataSocketSerializer);
|
var payload = (msg.Payload as JToken).ToObject<RedirectEvent>(_client.DataSocketSerializer);
|
||||||
if (payload.Url != null)
|
if (payload.Url != null)
|
||||||
@@ -110,7 +124,7 @@ namespace Discord.Net.WebSockets
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (_logLevel >= LogMessageSeverity.Warning)
|
if (_logLevel >= LogMessageSeverity.Warning)
|
||||||
RaiseOnLog(LogMessageSeverity.Warning, $"Unknown Opcode: {msg.Operation}");
|
RaiseOnLog(LogMessageSeverity.Warning, $"Unknown Opcode: {opCode}");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,16 @@ namespace Discord.Net.WebSockets
|
|||||||
{
|
{
|
||||||
internal partial class VoiceWebSocket : WebSocket
|
internal partial class VoiceWebSocket : WebSocket
|
||||||
{
|
{
|
||||||
|
public enum OpCodes : byte
|
||||||
|
{
|
||||||
|
Identify = 0,
|
||||||
|
SelectProtocol = 1,
|
||||||
|
Ready = 2,
|
||||||
|
Heartbeat = 3,
|
||||||
|
SessionDescription = 4,
|
||||||
|
Speaking = 5
|
||||||
|
}
|
||||||
|
|
||||||
private const int MaxOpusSize = 4000;
|
private const int MaxOpusSize = 4000;
|
||||||
private const string EncryptedMode = "xsalsa20_poly1305";
|
private const string EncryptedMode = "xsalsa20_poly1305";
|
||||||
private const string UnencryptedMode = "plain";
|
private const string UnencryptedMode = "plain";
|
||||||
@@ -437,9 +447,10 @@ namespace Discord.Net.WebSockets
|
|||||||
{
|
{
|
||||||
await base.ProcessMessage(json).ConfigureAwait(false);
|
await base.ProcessMessage(json).ConfigureAwait(false);
|
||||||
var msg = JsonConvert.DeserializeObject<WebSocketMessage>(json);
|
var msg = JsonConvert.DeserializeObject<WebSocketMessage>(json);
|
||||||
switch (msg.Operation)
|
var opCode = (OpCodes)msg.Operation;
|
||||||
|
switch (opCode)
|
||||||
{
|
{
|
||||||
case 2: //READY
|
case OpCodes.Ready:
|
||||||
{
|
{
|
||||||
if (_state != (int)WebSocketState.Connected)
|
if (_state != (int)WebSocketState.Connected)
|
||||||
{
|
{
|
||||||
@@ -476,7 +487,7 @@ namespace Discord.Net.WebSockets
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 3: //PONG
|
case OpCodes.Heartbeat:
|
||||||
{
|
{
|
||||||
long time = EpochTime.GetMilliseconds();
|
long time = EpochTime.GetMilliseconds();
|
||||||
var payload = (long)msg.Payload;
|
var payload = (long)msg.Payload;
|
||||||
@@ -484,7 +495,7 @@ namespace Discord.Net.WebSockets
|
|||||||
//TODO: Use this to estimate latency
|
//TODO: Use this to estimate latency
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 4: //SESSION_DESCRIPTION
|
case OpCodes.SessionDescription:
|
||||||
{
|
{
|
||||||
var payload = (msg.Payload as JToken).ToObject<JoinServerEvent>(_client.VoiceSocketSerializer);
|
var payload = (msg.Payload as JToken).ToObject<JoinServerEvent>(_client.VoiceSocketSerializer);
|
||||||
_secretKey = payload.SecretKey;
|
_secretKey = payload.SecretKey;
|
||||||
@@ -492,7 +503,7 @@ namespace Discord.Net.WebSockets
|
|||||||
EndConnect();
|
EndConnect();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 5:
|
case OpCodes.Speaking:
|
||||||
{
|
{
|
||||||
var payload = (msg.Payload as JToken).ToObject<IsTalkingEvent>(_client.VoiceSocketSerializer);
|
var payload = (msg.Payload as JToken).ToObject<IsTalkingEvent>(_client.VoiceSocketSerializer);
|
||||||
RaiseIsSpeaking(payload.UserId, payload.IsSpeaking);
|
RaiseIsSpeaking(payload.UserId, payload.IsSpeaking);
|
||||||
@@ -500,7 +511,7 @@ namespace Discord.Net.WebSockets
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (_logLevel >= LogMessageSeverity.Warning)
|
if (_logLevel >= LogMessageSeverity.Warning)
|
||||||
RaiseOnLog(LogMessageSeverity.Warning, $"Unknown Opcode: {msg.Operation}");
|
RaiseOnLog(LogMessageSeverity.Warning, $"Unknown Opcode: {opCode}");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user