示例#1
0
 public void SendBroadcast(MessageType messageType, String2 data)
 {
     foreach (IWorkSocketClient client in WorkSocketFactory.GetWorkSocketServer().GetSocketList())
     {
         client.Send((int)messageType, data);
     }
 }
示例#2
0
        public void SocketServer()
        {
            IServer server = ServerFactory.CreateServer(80, 500);

            server.Acception += (client) =>
            {
                try
                {
                    HandShake header = client.Receive();
                    logger.Debug(header);
                    String2 type = header[Define.PROTOCOL_CONNECTION];
                    if (type == null)
                    {
                        throw new Exception("header errer");
                    }
                    type = type.ToUpper();
                    if (type.Equals(Define.KEEP_ALIVE))
                    {
                        //This source is necessary that is modified.
                        IWorkWebClient webclient = WorkWebFactory.GetWorkWebServer().CreateWebClient(client);
                        webclient.Initialize(header);
                        WebController.NewInstance(webclient);
                    }
                    else if (type.Equals(Define.UPGRADE))
                    {
                        IWorkSocketClient socketclient = WorkSocketFactory.GetWorkSocketServer().CreateSocketClient(client);
                        socketclient.Initialize(header["Sec-WebSocket-Key"]);
                        SocketController control = SocketController.NewInstance(socketclient);
                        socketclient.SetReceiveEvent(control.SetReceive());
                    }
                    else
                    {
                        logger.Error(type);
                        throw new Exception("header errer");
                    }
                }
                catch (Exception e)
                {
                    logger.Error(e);
                    client.Close();
                }
            };
            server.ServerStart();
        }
示例#3
0
        private void SendWorkList(IWorkSocketClient client, WorkType type)
        {
            WebSocketMessageBuilder builder = WebSocketMessageBuilder.GetMessage(MessageType.WORKLIST);
            DirectoryInfo           info    = new DirectoryInfo(Program.WORK_PATH);

            FileInfo[] files = info.GetFiles();
            builder.SetFileList(from f in info.GetFiles() where !String.Equals(f.Name, "default") select f.Name);
            String2 message = builder.Build();

            if (type == WorkType.WorkListNotice)
            {
                foreach (IWorkSocketClient c in WorkSocketFactory.GetWorkSocketServer().GetSocketList())
                {
                    c.Send((int)Opcode.BINARY, message);
                }
            }
            else if (type == WorkType.WorkSearch)
            {
                client.Send((int)Opcode.BINARY, message);
            }
        }