3

Xamarin.ios で iOS アプリケーションを実行しようとしています。Websocket を使用してアプリにイベントを送信できるサーバーがあります。ただし、このイベントを処理する関数は別のプロジェクトで実装されています。

したがって、サーバーが新しいイベントを送信した場合、新しいイベントが到着したことを iOS プロジェクトに伝えたいと思います。両方のプロジェクトを相互に参照できないため、返品できません。

1 つのソリューションで複数のプロジェクトのイベント ドリブン設計を実装するにはどうすればよいですか?

これが私の現在のコードです:

iOS プロジェクト

    public partial class LobbyViewController : UIViewController
{


    public LobbyViewController (IntPtr handle) : base (handle)
    { 
    }

    public override void ViewDidLoad()
    {
        base.ViewDidLoad();                   
    }

    public void changePage()
    {
        UIViewController introViewController = Storyboard.InstantiateViewController("IntroViewController") as IntroViewController;
        introViewController.ModalTransitionStyle = UIModalTransitionStyle.CoverVertical;
        PresentViewController(introViewController, true, null);
    }
}

一般的なプロジェクト (私のイベントが到着する場所)

public static class Sockets
{
    public static Socket socket;
    static bool isConnected = false;

    public static void Main(string token)
    {
        socket = connect(token);
    }

    private static Socket connect(string Token)
    {
        var options = new IO.Options();
        options.Query = new Dictionary<string, string>()
        {
            { "token", Token }
        };

        var socket = IO.Socket(Resource.SocketsUrl, options);

        socket.On(Socket.EVENT_CONNECT, () =>
        {
            isConnected = true;
        });

        socket.On(Socket.EVENT_ERROR, (error) =>
        {
            appendLogMessage("ERROR! " + error.ToString(), true);
        });

        socket.On(Socket.EVENT_DISCONNECT, (data) =>
        {
            isConnected = false;
            appendLogMessage("Disconected");
        });

        socket.On(Socket.EVENT_MESSAGE, (data) =>
        {
            appendLogMessage(data.ToString(), true);
        });

        socket.On("lobbyParticipantAdded", (data) =>
        {
            appendLogMessage(data.ToString(), true);
        });

        socket.On("lobbyFlowStart", (data) =>
        {
            appendLogMessage(data.ToString(), true);
        });

        socket.On("quizQuestion", (data) =>
        {
            appendLogMessage(data.ToString(), true);
        });

        socket.On("gameEnd", (data) =>
        {
            appendLogMessage(data.ToString(), true);
        });

        return socket;
    }
 }
4

1 に答える 1