/// <summary> /// The on web socket message. /// </summary> /// <param name="server"> /// The server. /// </param> /// <param name="connectionId"> /// The connection id. /// </param> /// <param name="data"> /// The data. /// </param> /// <param name="dataSize"> /// The data size. /// </param> protected override void OnWebSocketMessage(CefServer server, int connectionId, IntPtr data, long dataSize) { lock (mlockObj) { mWebsocketHandler?.OnMessage(connectionId, data, dataSize); } }
public OnHttpRequestEventArgs(CefServer server, int connectionId, string clientAddress, CefRequest request) : base(server) { this.ConnectionId = connectionId; this.ClientAddress = clientAddress; this.Request = request; }
public RequestHelper(CefServer server, CefRequest request) { this.request = request; this.server = server; this.Url = request.Url; this.FirstPartyForCookies = request.FirstPartyForCookies; this.Identifier = (int)request.Identifier; this.IsReadOnly = request.IsReadOnly; this.Method = request.Method; this.Options = request.Options.ToString(); var data = new PostHelper(); if (request.PostData != null) { foreach (var element in request.PostData.GetElements()) { data.Append(element); } } this.PostData = data.Raw; this.ReferrerPolicy = request.ReferrerPolicy.ToString(); this.ReferrerURL = request.ReferrerURL; this.ResourceType = request.ResourceType.ToString(); this.TransitionType = request.TransitionType.ToString(); this.Url = request.Url; }
protected override void OnWebSocketMessage(CefServer server, int connectionId, IntPtr data, long dataSize) { if (this.webCallbacks["onWebSocketMessage"] != null) { try { if (dataSize > 0) { byte[] messageBytes = new byte[dataSize]; Marshal.Copy(data, messageBytes, 0, (int)dataSize); var message = Encoding.Default.GetString(messageBytes); var _callback = this.webCallbacks["onWebSocketMessage"]; new Task(() => { _callback.Context.Enter(); _callback.Runner.PostTask(new CallbackTask(_callback.Context, _callback.Callback, connectionId, message)); _callback.Context.Exit(); }).Start(); } } catch (Exception ex) { Log.Trace(ex.Message, ex.StackTrace, true); } } if (onWebSocketMessage != null) { onWebSocketMessage(this, new OnWebSocketMessageEventArgs(server, connectionId, data, dataSize)); } }
protected override void OnWebSocketRequest(CefServer server, int connectionId, string clientAddress, CefRequest request, CefCallback callback) { if (this.webCallbacks["onWebSocketRequest"] != null) { try { var _callback = this.webCallbacks["onWebSocketRequest"]; new Task(() => { _callback.Context.Enter(); var _request = new RequestHelper(server, request); this.webResponseCallbacks.Add(connectionId, _request); _callback.Runner.PostTask(new CallbackTask(_callback.Context, _callback.Callback, connectionId, clientAddress, _request.ToJson())); _callback.Context.Exit(); }).Start(); callback.Continue(); } catch (Exception ex) { Log.Trace(ex.Message, ex.StackTrace, true); } } if (onWebSocketRequest != null) { onWebSocketRequest(this, new OnWebSocketRequestEventArgs(server, connectionId, clientAddress, request, callback)); } }
/// <summary> /// The start server. /// </summary> /// <param name="port"> /// The port. /// </param> /// <param name="completecallback"> /// The completecallback. /// </param> public void StartServer(int port, Action completecallback) { if (!CefRuntime.CurrentlyOn(CefThreadId.UI)) { Action <int, Action> startServer = (p, c) => this.StartServer(p, c); this.PostTask(CefThreadId.UI, startServer, port, completecallback); return; } if (this.mServer == null) { if (!(port >= 1025 && port <= 65535)) { return; } this.Address = DefaultServerAddress; this.Port = port; this.mCompleteCallback = completecallback; CefServer.Create(this.Address, (ushort)this.Port, DefaultServerBacklog, this); } }
public OnWebSocketMessageEventArgs(CefServer server, int connectionId, IntPtr data, long dataSize) : base(server) { this.ConnectionId = connectionId; this.Data = data; this.DataSize = dataSize; }
/// <summary> /// The start server. /// </summary> /// <param name="address"> /// The address. /// </param> /// <param name="port"> /// The port. /// </param> /// <param name="completecallback"> /// The completecallback. /// </param> public void StartServer(string address, int port, Action completecallback) { if (!CefRuntime.CurrentlyOn(CefThreadId.UI)) { Action <string, int, Action> startServer = (a, p, c) => StartServer(a, p, c); PostTask(CefThreadId.UI, startServer, address, port, completecallback); return; } if (mServer == null) { if (!(port >= 1025 && port <= 65535)) { return; } Address = string.IsNullOrWhiteSpace(address) ? DefaultServerAddress : address; Port = port; mCompleteCallback = completecallback; CefServer.Create(Address, (ushort)Port, DefaultServerBacklog, this); } }
/// <summary> /// The on web socket message. /// </summary> /// <param name="server"> /// The server. /// </param> /// <param name="connectionId"> /// The connection id. /// </param> /// <param name="data"> /// The data. /// </param> /// <param name="dataSize"> /// The data size. /// </param> protected override void OnWebSocketMessage(CefServer server, int connectionId, IntPtr data, long dataSize) { Task.Factory.StartNew(() => { IntPtr tempPtr = IntPtr.Zero; IntPtr outIntPtr = IntPtr.Zero; try { var managedArray = new byte[dataSize]; Marshal.Copy(data, managedArray, 0, (int)dataSize); tempPtr = Marshal.AllocHGlobal(managedArray.Length); Marshal.Copy(managedArray, 0, tempPtr, managedArray.Length); var requestString = Encoding.UTF8.GetString(managedArray); var jsonData = JsonMapper.ToObject <JsonData>(requestString); var request = new ChromelyRequest(jsonData); var response = RequestTaskRunner.Run(request); WebsocketMessageSender.Send(connectionId, response); } catch (Exception exception) { Log.Error(exception); } finally { // Free the unmanaged memory. Marshal.FreeHGlobal(tempPtr); Marshal.FreeHGlobal(outIntPtr); } }); }
public OnWebSocketRequestEventArgs(CefServer server, int connectionId, string clientAddress, CefRequest request, CefCallback callback) : base(server) { this.ConnectionId = connectionId; this.ClientAddress = clientAddress; this.Request = request; this.Callback = callback; }
public void Connect() { if (!IsConnected && !string.IsNullOrEmpty(this.Address) && this.Port > 0 && this.Threads > 0) { CefServer.Create(this.Address, (ushort)this.Port, this.Threads, this); IsConnected = true; } }
/// <summary> /// The dispose server. /// </summary> public void DisposeServer() { if (mServer != null) { mServer.Dispose(); IsServerRunning = false; mServer = null; } }
/// <summary> /// The on server destroyed. /// </summary> /// <param name="server"> /// The server. /// </param> protected override void OnServerDestroyed(CefServer server) { if (_server != null) { _server = null; IsServerRunning = false; RunCompleteCallback(true); } }
/// <summary> /// The on server destroyed. /// </summary> /// <param name="server"> /// The server. /// </param> protected override void OnServerDestroyed(CefServer server) { if (this.mServer != null) { this.mServer = null; this.IsServerRunning = false; this.RunCompleteCallback(true); } }
/// <summary> /// The dispose server. /// </summary> public void DisposeServer() { if (this.mServer != null) { this.mServer.Dispose(); this.IsServerRunning = false; this.mServer = null; } }
/// <summary> /// The on server created. /// </summary> /// <param name="server"> /// The server. /// </param> protected override void OnServerCreated(CefServer server) { if (this.mServer == null) { this.mServer = server; IoC.RegisterInstance(typeof(CefServer), typeof(CefServer).FullName, this.mServer); this.IsServerRunning = server.IsRunning; this.RunCompleteCallback(server.IsRunning); } }
/// <summary> /// The on server created. /// </summary> /// <param name="server"> /// The server. /// </param> protected override void OnServerCreated(CefServer server) { if (mServer == null) { ConnectionNameMapper.Clear(); mServer = server; IoC.RegisterInstance(typeof(CefServer), typeof(CefServer).FullName, mServer); IsServerRunning = server.IsRunning; RunCompleteCallback(server.IsRunning); } }
/// <summary> /// The on web socket request. /// </summary> /// <param name="server"> /// The server. /// </param> /// <param name="connectionId"> /// The connection id. /// </param> /// <param name="clientAddress"> /// The client address. /// </param> /// <param name="request"> /// The request. /// </param> /// <param name="callback"> /// The callback. /// </param> protected override void OnWebSocketRequest( CefServer server, int connectionId, string clientAddress, CefRequest request, CefCallback callback) { // Cache name and connection identifier. ConnectionNameMapper.Add(request.Url, connectionId); // Always accept WebSocket connections. callback.Continue(); }
private InternalHandle create(V8Engine engine, bool isConstructCall, InternalHandle _this, InternalHandle[] args) { if (args.Length == 3) { var address = args[0].AsString; var port = args[1].AsInt32; var threads = args[2].AsInt32; if (!string.IsNullOrEmpty(address) && port > 0 && threads > 0) { var serverHandler = new ServerHandler(); CefServer.Create(address, (ushort)port, threads, serverHandler); } } return(null); }
public virtual void Open(InputSetup setup) { _queue?.Dispose(); var contextSetup = (WebBrowserContextSetup)setup.ObjectInput; _size = new Size(contextSetup.PageWidth, contextSetup.PageHeight); _queue = new InputBufferQueue("WebBrowserQueue", _streamer, MaxPackets, setup.Dx, contextSetup.PageWidth, contextSetup.PageHeight); CefServer.EnsureInit(new CefConfiguration { CachePathRoot = Path.Combine(contextSetup.BaseFolder, "cache"), CachePathRequest = Path.Combine(contextSetup.BaseFolder, "cache\\request"), CachePathGlobal = Path.Combine(contextSetup.BaseFolder, "cache\\global"), LogVerbose = false, LogFile = Path.Combine(contextSetup.BaseFolder, "wb.log") }); if (_cefBrowser == null) { _cefBrowser = CefServer.CreateBrowser(setup.Input, contextSetup.Fps, this); } else { _cefBrowser.Load(setup.Input); } Config = new InputConfig( new InputStreamProperties[] { new InputStreamProperties { CodecProps = new CodecProperties { codec_type = AVMediaType.AVMEDIA_TYPE_VIDEO, codec_id = Core.Const.CODEC_ID_RAWVIDEO, width = _size.Width, height = _size.Height, bits_per_coded_sample = 4 * 8, format = setup.Dx == null ? Core.Const.PIX_FMT_BGRA : Core.PIX_FMT_INTERNAL_DIRECTX, extradata = new byte[1024] } } } ); }
protected override void OnWebSocketConnected(CefServer server, int connectionId) { if (this.webCallbacks["onWebSocketConnected"] != null) { try { var _callback = this.webCallbacks["onWebSocketConnected"]; new Task(() => { _callback.Context.Enter(); _callback.Runner.PostTask(new CallbackTask(_callback.Context, _callback.Callback, connectionId)); _callback.Context.Exit(); }).Start(); } catch (Exception ex) { Log.Trace(ex.Message, ex.StackTrace, true); } } if (onWebSocketConnected != null) { onWebSocketConnected(this, new OnWebSocketConnectedEventArgs(server, connectionId)); } }
public override void OnHttpRequest(CefServer server, int connectionId, string clientAddress, CefRequest request) { _implementation.OnHttpRequest(server, connectionId, clientAddress, request); }
/// <summary> /// The on web socket connected. /// </summary> /// <param name="server"> /// The server. /// </param> /// <param name="connectionId"> /// The connection id. /// </param> protected override void OnWebSocketConnected(CefServer server, int connectionId) { }
/// <summary> /// The on http request. /// </summary> /// <param name="server"> /// The server. /// </param> /// <param name="connectionId"> /// The connection id. /// </param> /// <param name="clientAddress"> /// The client address. /// </param> /// <param name="request"> /// The request. /// </param> protected override void OnHttpRequest(CefServer server, int connectionId, string clientAddress, CefRequest request) { }
/// <summary> /// The on client disconnected. /// </summary> /// <param name="server"> /// The server. /// </param> /// <param name="connectionId"> /// The connection id. /// </param> protected override void OnClientDisconnected(CefServer server, int connectionId) { }
public OnServerCreatedEventArgs(CefServer server) : base(server) { }
public override void OnWebSocketConnected(CefServer server, int connectionId) { _implementation.OnWebSocketConnected(server, connectionId); }
public override void OnClientDisconnected(CefServer server, int connectionId) { _implementation.OnClientDisconnected(server, connectionId); }
public static void Shutdown() { PluginContextSetup.Unload(); CefServer.Shutdown(); }
public override void OnWebSocketRequest(CefServer server, int connectionId, string clientAddress, CefRequest request, CefCallback callback) { _implementation.OnWebSocketRequest(server, connectionId, clientAddress, request, callback); }