示例#1
0
 public void Init(DmdSocket socket)
 {
     Logger.Debug("Init socket");
     socket.SendDimensions(_width, _height);
     socket.SendColor(_color);
     if (_palette != null)
     {
         socket.SendPalette(_palette);
     }
 }
示例#2
0
        public BrowserStream(int port)
        {
            // map embedded www resources to _www
            const string prefix = "LibDmd.Output.Network.www.";

            _assembly.GetManifestResourceNames()
            .Where(res => res.StartsWith(prefix))
            .ToList()
            .ForEach(res => _www["/" + res.Substring(prefix.Length)] = res);
            _www["/"] = prefix + "index.html";

            _server        = new HttpServer(port);
            _server.OnGet += (sender, e) => {
                var req = e.Request;
                var res = e.Response;

                var path   = req.RawUrl;
                var output = res.OutputStream;

                if (_www.ContainsKey(path))
                {
                    res.StatusCode      = (int)HttpStatusCode.OK;
                    res.ContentType     = GetMimeType(Path.GetExtension(path));
                    res.ContentEncoding = Encoding.UTF8;
                    using (var input = _assembly.GetManifestResourceStream(_www[path])) {
                        res.ContentLength64 = input.Length;
                        CopyStream(input, output);
                    }
                }
                else
                {
                    Logger.Warn("Path {0} not found in assembly.", path);
                    res.StatusCode = (int)HttpStatusCode.NotFound;
                }
            };
            _server.AddWebSocketService("/dmd", () => {
                var socket = new DmdSocket(this);
                _sockets.Add(socket);
                return(socket);
            });
            _server.Start();
            if (_server.IsListening)
            {
                Logger.Info("Listening on port {0}, and providing WebSocket services:", _server.Port);
                foreach (var path in _server.WebSocketServices.Paths)
                {
                    Logger.Info("- {0}", path);
                }
            }
        }
示例#3
0
 public void Closed(DmdSocket socket)
 {
     _sockets.Remove(socket);
     Logger.Debug("Socket closed");
 }