mirror of
https://github.com/ElectronNET/Electron.NET.git
synced 2026-02-14 13:44:47 +00:00
75 lines
2.4 KiB
C#
75 lines
2.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
|
|
namespace SocketIOClient.Messages
|
|
{
|
|
public static class MessageFactory
|
|
{
|
|
private static IMessage CreateMessage(MessageType type)
|
|
{
|
|
switch (type)
|
|
{
|
|
case MessageType.Opened:
|
|
return new OpenedMessage();
|
|
case MessageType.Ping:
|
|
return new PingMessage();
|
|
case MessageType.Pong:
|
|
return new PongMessage();
|
|
case MessageType.Connected:
|
|
return new ConnectedMessage();
|
|
case MessageType.Disconnected:
|
|
return new DisconnectedMessage();
|
|
case MessageType.EventMessage:
|
|
return new EventMessage();
|
|
case MessageType.AckMessage:
|
|
return new ClientAckMessage();
|
|
case MessageType.ErrorMessage:
|
|
return new ErrorMessage();
|
|
case MessageType.BinaryMessage:
|
|
return new BinaryMessage();
|
|
case MessageType.BinaryAckMessage:
|
|
return new ClientBinaryAckMessage();
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public static IMessage CreateMessage(int eio, string msg)
|
|
{
|
|
var enums = Enum.GetValues(typeof(MessageType));
|
|
foreach (MessageType item in enums)
|
|
{
|
|
string prefix = ((int)item).ToString();
|
|
if (msg.StartsWith(prefix))
|
|
{
|
|
IMessage result = CreateMessage(item);
|
|
if (result != null)
|
|
{
|
|
result.Eio = eio;
|
|
result.Read(msg.Substring(prefix.Length));
|
|
return result;
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public static OpenedMessage CreateOpenedMessage(string msg)
|
|
{
|
|
var openedMessage = new OpenedMessage();
|
|
if (msg[0] == '0')
|
|
{
|
|
openedMessage.Eio = 4;
|
|
openedMessage.Read(msg.Substring(1));
|
|
}
|
|
else
|
|
{
|
|
openedMessage.Eio = 3;
|
|
int index = msg.IndexOf(':');
|
|
openedMessage.Read(msg.Substring(index + 2));
|
|
}
|
|
return openedMessage;
|
|
}
|
|
}
|
|
}
|