Socket - ScutGame/Scut GitHub Wiki

此章节介绍如何创建Socket的服务端项目

项目搭建参考如何搭建服务端项目工程

  • 提供GameSocketHost类处理可以同时接收Socket和Http请求的处理,只需要在MainClass脚本类继承GameSocketHost类,即可实现短连接的Http通讯方式; 示例代码如下:

public class MainClass : GameSocketHost
{
    protected override void OnConnectCompleted(object sender, ConnectionEventArgs e)
    {
        Console.WriteLine("客户端IP:[{0}]已与服务器连接成功", e.Socket.RemoteEndPoint);
        base.OnConnectCompleted(sender, e);
    }

    protected override void OnDisconnected(GameSession session)
    {
        Console.WriteLine("客户端UserId:[{0}]已与服务器断开", session.RemoteAddress);
        base.OnDisconnected(session);
    }

    protected override void OnHeartbeat(GameSession session)
    {
        Console.WriteLine("{0}>>客户端的心跳包: {1} session count {2}", DateTime.Now.ToString("HH:mm:ss"), session.RemoteAddress, GameSession.Count);
        base.OnHeartbeat(session);
    }

    protected override void OnReceivedBefore(ConnectionEventArgs e)
    {
        //请求的源数据
        Console.WriteLine(Encoding.UTF8.GetString(e.Data));
        base.OnReceivedBefore(e);
    }

    protected override void OnRequested(ActionGetter actionGetter, BaseGameResponse response)
    {
        //这里处理玩家请求的业务
        Console.WriteLine(actionGetter.ToParamString());
        base.OnRequested(actionGetter, response);
    }

    protected override void OnStartAffer()
    {
        //这里处理服务启动后的业务
    }

    protected override void OnServiceStop()
    {
        //这里处理服务停止时的业务
        GameEnvironment.Stop();
    }
}

  • 游戏配置

在项目中的GameServer.exe.config文件中增加以下,同时使用Socket和Http配置。

<add key="Game.Port" value="9001" />

参考服务器推送消息