问题标签 [webbroker]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
629 浏览

rest - delphi rest getdatasnapWebModule

我的应用程序有些奇怪。我想知道我做错了什么或我不明白什么。

目标是在 ServerMethodsUnit 中创建 2 个函数来修改 Web 模块的变量。

为了那个原因,

我使用了带有以下参数的 Datasnap Rest Server 向导

独立的 VCL Gui 应用程序没有自动化,来自 Tdatamodule 服务器方法 EchoString 和 ReverseString 运行良好。

首先,我在 WebModuleUnit1 中添加了变量 var1:string;

我在 ServerMethodsUnit1 中添加了 ServerMethodsUnit1 中的 2 个函数

函数 SetVar1(astr:string):string; 函数GetVar1():字符串;

以及 Datasnap.DSHTTPWebBroker(接口)和 WebModuleUnit1(实现)的使用

一切似乎都很好!

我用http://localhost:xxxx/ServerFunctionInvoker测试我的 2 函数

当我只有一个连接到我的网络服务器时,一切正常。

当我有多个连接时,它不再起作用。我的印象是该变量由 WebModule 的不同实例共享。

例子 :

如果我运行相同的功能 3 次,我没有相同的答案!!!

就好像 GetDataSnapWebModule 函数没有返回正确的 web 模块。

我做错了什么?

如何在函数 rest 的 2 次调用之间共享变量(或 TfdmemTable)

预先感谢您的帮助。

@+ 罗莫尔德

0 投票
0 回答
62 浏览

rest - Delphi RAD Studio 10 Berlin WebBroker HTTP 端口错误 - 没有与 guid 接口的对等点

我正在使用 RAD Studio 10.1 Berlin,尝试通过以下步骤创建 REST 示例应用程序:

New Project->Select Other->Web Server Application->Standalone Application->VCL Application->Port Number.

我用 8080 选择了“测试端口”并得到了这个错误:

No peer with the interface with guid {} has been registered.

我尝试使用不同的端口号仍然得到相同的错误。

0 投票
0 回答
329 浏览

apache - 使用 HTTP 协议的 Delphi 回调服务器 几分钟后总是超时

我在 Delphi Tokyo 中设置回调服务器时遇到问题。我已经设置了一个 Datasnap WebBroker 服务器,然后我使用

在我的客户端上连接回调服务器,它可以连接,我可以向其他客户端发送广播消息,但是在连接几分钟后,它将断开连接,当我尝试广播消息时,它会引发异常,告知通信正在暂停。

我使用 HTTP 协议进行连接,使用 TCP/IP 协议时不会发生这种情况。该代码只是创建针对 Apache 的 webbroker 应用程序的向导。这里是 SQLConnection 的代码:

这里是连接回调服务器的代码:

那么谁能给我一些建议我错过了什么?

0 投票
1 回答
1685 浏览

rest - Delphi REST客户端/服务器(网络经纪人)+数据库+同时客户端请求

我是 REST 开发的新手,我正在创建一个简单的 REST API 来从客户端请求数据库值。我使用了“Delphi Web 服务器应用程序”项目助手(使用 TIdHTTPWebBrokerBridge 和创建不同“操作”的 WebModule 的那个)。它工作正常,我可以向客户提出请求。

服务器 WebModule 包含一个 FDConnection 和一些 FDQuery 组件来进行数据库(MySQL)查询,每个 Action 执行一个特定的查询,并通过请求参数获得特定的参数。

客户端应用程序使用 TRESTResponse、TRESTRequest、TRESRResponse 组件来发送/接收数据。

例如:

  • 客户端请求服务器为特定用户提供一些值,发送“user = user1”和“passwd = ***”作为请求参数。
  • 服务器执行查询“select * from xxx where user = user1 and passwd = .......”并将响应发送给客户端。

每个查询都是“用户特定的”。

好的,它有效,但由于我的休息/网络经纪人功能无知,现在我有些疑虑。

如果一次发出数千个请求怎么办?服务器是否会因为 FDQuery 游标在另一条记录中而响应不正确的数据?或者网络经纪人是否为每个请求创建查询没有问题?

在运行时为每个请求创建 FDQuery 并在请求完成后销毁它会更好吗?

我昨天做了一个简单的测试,运行三个客户端应用程序实例,同时向服务器发送 300 个请求(每个客户端 100 个),它工作正常,接收到正确的数据,但我不知道这是否足够保证。

这是(Delphi Web 服务器应用程序)创建服务器的正确方法吗?与 DataSnap 有什么区别?

有什么建议吗?

0 投票
0 回答
143 浏览

delphi - 有没有办法可以发送带有 httprequest.post 方法的 TFileStream 并以某种方式在我的网络经纪人中提取它?

我正在尝试允许客户将 pdf/xls 和 jpg 文件上传到我正在运行的网络经纪人服务器。我想我正在发送正确的内容,但我不知道如何提取接收到的数据。我找不到合适的方法来允许我这样做。我正在使用提供的 Delphi httprequest.post 方法连接到服务器的后端。

下面的代码片段:

客户

服务器

0 投票
1 回答
112 浏览

delphi - Delphi中的Producer和ProducerContent有什么区别?

在 Delphi 中,TWebActionItem.Producer 和 TWebActionItem.ProducerContent 属性在Web Brokers中用于在操作项执行时生成响应消息的内容。

TWebActionItem.Producer 和 TWebActionItem.ProducerContent 有什么区别?我们应该使用哪一个?

0 投票
0 回答
152 浏览

multithreading - Delphi WebBroker 真正多线程?

我正在使用普通的 webBroker Delphi 10.4.1

我有一个接受 Json 字符串的服务器。我解析它并将相同的数据发送回(为简单起见)给客户端。

我的假设是 Webbroker 有默认的 32 个线程(Web 模块实例)将在服务器上创建 - 随着并发客户端请求开始到达服务器并在 32 处停止(请参阅 web.webreq.pas)

为了测试这个场景,我创建了一个简单的客户端程序,它有一个 For 循环,它将通过一个携带 JSon 字符串的请求不断向服务器触发。

对于 10,000 个请求,大约需要 14 秒。只有一个 webModule 实例被创建......这很好,因为 for 循环以 SYNCHRONOUS 模式以串行方式发送请求。

当我运行客户端程序的另一个(并行)实例时,WebModule 的第二个实例被创建......很公平。当我运行客户端的另一个并行实例时,WebModule 的第三个实例被创建....依此类推

现在是有趣的部分......

还记得只有我的第一个客户端程序运行时,10K 请求所花费的时间是 14 秒吗?随着我增加并发客户端的数量,处理时间也会增加

如果服务器确实如所声称的那样是多线程的,那么至少多达 32 个并发客户端请求所花费的时间应该是相同的,以处理来自每个客户端的 10K 条记录,对吧?也就是说,必须在 14 秒内完成所有 3 个客户端程序请求(总计 30K 请求)。大约需要3倍的时间大约42秒

有人可以澄清一下Web Broker是否真的是多线程的吗?如果是这样,我错过了什么?

0 投票
1 回答
163 浏览

delphi - DataSnap WebBroker 应用程序,“尚未调用 Coinitialize”

德尔福 10.3

我有一个运行良好 6 个月的 Datasnap Webbroker 应用程序。现在它以“尚未调用coinitialize”响应请求。这是同一个exe。我认为它运行的机器或它连接的 SQL 机器没有任何变化。我们已经尝试在代码的不同位置添加 coinitialize 调用,但这并没有阻止错误。

我不确定下一步该尝试什么。谢谢你。

0 投票
1 回答
99 浏览

apache - 调用 DataSnap Apache 模块失败

我创建了一个 Delphi 独立的 DataSnap WebBroker 应用程序和一个名为 mod_webbroker.dll 的可加载 apache 模块。
它们共享相同的单元。
对独立 DataSnap WebBroker 的调用成功,但对 apache 模块的调用失败,没有响应结果。
这是对独立 exe 的调用:
URL:http://localhost:8080/datasnap/rest/TServerMethods1/%22ReverseString%22
方法:发布
内容类型:应用程序 /json
自定义正文:123

我尝试以两种方式调用 apache 模块。两者都没有得到回应:
http://localhost:8080/datasnap/rest/TServerMethods1/%22ReverseString%22
http://localhost:8080/webbroker_module/datasnap/rest/TServerMethods1/%22ReverseString%22

我的 httpd.conf 更改:

我调用 apache 模块方法的方式或我的 httpd.conf 更改是否有错误?
我在 Windows 10 PC 上使用用于 Windows 的 Delphi 10.3 RIO 和 Apache 2.4 32 位。
提前致谢。