在 CEF4 浏览器组件中使用 WebSocket 是可行的, 但是, 如果涉及到数据处理必须要能够交互,
我改写 CEF4 浏览器组件的 uCEFApplication.pas 并完成了 v8 数据交互处理
修改组件代码如下, (注册JAVA类名为 'JSExt', 类方法名为 Notify )
uses
// ...
uCEFInterfaces, uCEFRenderProcessHandler, uCEFProcessMessage,
uCEFv8Context, uCEFv8Handler;
type
TCefJavaScriptExtension = class
class procedure Notify(const msgName, msgData : string);
end;
class procedure TCefJavaScriptExtension.Notify(const msgName, msgData : string);
var
msg: ICefProcessMessage;
begin
msg := TCefProcessMessageRef.New(msgName);
msg.ArgumentList.SetString(0, msgData);
TCefv8ContextRef.Current.Browser.MainFrame.SendProcessMessage(PID_BROWSER, msg);
end;
procedure RenderProcessHandler_OnWebKitInitialized;
begin
TCefRTTIExtension.Register('JSExt', TCefJavaScriptExtension);
end;
constructor TCefApplication.Create(const APath : String);
begin
// ...
FOnWebKitInitialized := RenderProcessHandler_O

本文介绍了如何在BCB中利用CEF4浏览器组件实现WebSocket通信。通过修改uCEFApplication.pas文件并注册JSExt类,实现了V8数据交互。详细步骤包括在CEFChromium中执行JavaScript代码来连接、发送WebSocket消息,并强调需先加载空白页再加载HTML以确保正确通信。这种方法避免了使用特定WebSocket组件和处理版本升级的问题。
最低0.47元/天 解锁文章
601

被折叠的 条评论
为什么被折叠?



