如何将消息从php发送到node.js?我有一个运行php和node.js的Linux服务器。
当用户完成事务(通过php)时,我想将消息从php发送到node.js。然后,节点将通过套接字连接更新客户端。
在不降低node.js性能的情况下,从php向node.js发送少量数据的好方法是什么?
与其他任何客户端一样,建议似乎是通过HTTP接口与节点对话。您可以使用php中的cURL通过HTTP与节点对话
请参阅:http
:
//groups.google.com/group/socket_io/browse_thread/thread/74a76896d2b72ccc/216933a076ac2595?pli=1
特别是,请参阅Matt Pardee的这篇文章
我遇到了一个类似的问题,希望让用户知道已添加到错误的新注释,以及类似的通知,这些通知实际上只能从PHP有效地发送到我的Node服务器。我所做的工作(如果发送时出现乱码且未格式化,则表示歉意,如果这样做,我很乐意将代码粘贴到其他位置):首先,您需要使用PHP中的cURL。我为此类编写了一个函数,如下所示:
function notifyNode($type, $project_id, $from_user, $data) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://127.0.0.1'); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:')); curl_setopt($ch, CURLOPT_PORT, 8001); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2); curl_setopt($ch, CURLOPT_POST, true); $pf = array('f' => $type, 'pid' => $project_id, 'user_from' =>
$from_user,
‘data’ => array());foreach($data as $k => $v) { $pf['data'][$k] = $v; } curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($pf)); curl_exec($ch); curl_close($ch); }
您会注意到,由于PHP和NodeJS都在同一服务器上运行,因此我在同一服务器上发送了cURL请求,因此您的行程可能会有所不同。我将此代码设置为连接的端口是8001(这是运行Node服务器的端口,也是socket.io服务器连接的端口)。这将发送一个HTTP
POST请求,其中的post字段已编码。这些都是非常标准的cURL东西。在您的Node应用程序中,您可能会有类似以下内容:
var server = http.createServer(function(req, res) {}); server.listen(8001); var io = io.listen(server, { transports: ['websocket', 'flashsocket',
‘xhr-polling’] });
...
好吧,我们将在http.createServer部分上进行扩展,以侦听来自本地主机(“
127.0.0.1”)的连接。然后,createServer代码变为:var server = http.createServer(function(req, res) { // Check for notices from PHP if(res.socket.remoteAddress == '127.0.0.1') { if(req.method == 'POST') { // The server is trying to send us an activity message var form = new formidable.IncomingForm(); form.parse(req, function(err, fields, files) { res.writeHead(200, [[ "Content-Type", "text/plain"] , ["Content-Length", 0] ]); res.write(''); res.end(); //sys.puts(sys.inspect({fields: fields}, true, 4)); handleServerNotice(fields); }); } } });
从那里可以实现handleServerNotice函数。
function handleServerNotice(data) { ... }
等等等等。我已经有一段时间没有对此进行测试了,实际上,代码块已在我的节点服务器上被注释掉了,所以我希望我粘贴到这里的内容能够起作用-
总的来说,这一概念已经得到证明,并且我认为它将为您工作。无论如何,只是想确保您知道已经过去了几个月,所以我不确定为什么要发表评论。我编写的代码进行了一些研究(例如在cURL中设置“
Expect:”标头),当它最终起作用时,我感到非常兴奋。让我知道您是否需要其他帮助。最好,
马特·帕迪
我有一个web应用程序,它通过WebLogic中的JMS与其他Java web应用程序通信。 我读到这样的答案:如何从PHP连接Jms? 我安装了ActiveMQ并尝试使用它。但是在Weblogic中,我们需要“jms_factory”和“queue_name”。我想它使用t3协议。
接口说明 轻推轻应用/订阅号支持发送文本、图片、文本卡片、图文、key-value、文件、待办等消息类型。本接口针对各种消息类型和发送的对象(单发、群发以及给部分人发送)进行了定义。 注:openid是用户关注某个轻应用/订阅号后生成的唯一id,单发和给部分人发送消息必须携带此参数,可以通过如下接口来获取: 根据qt_code获取用户基本信息 获取使用者列表 通过userId获取openid 消息
主动发送消息 use EasyWeChat\Kernel\Messages\TextCard; // 获取 Messenger 实例 $messenger = $app->messenger; // 准备消息 $message = new TextCard([ 'title' => '你的请假单审批通过', 'description' => '单号:1928373, ...
向已经创建连接凭据的设备发送消息数据。 请求方式: |4|2|3|message|\r 参数 message 发送的消息内容 返回值: "|4|2|3|1|\r" 发送成功 "|4|2|3|2|\r" 发送失败 Arduino样例: softSerial.print("|4|2|3|DFRobot|\r");
我试图发送OSC消息(打开声音控制)从vue原生(vue包装反应原生)应用程序直接到一个叫TouchDesigner的应用程序。 我现在已经解决了这个问题,我在Android系统上从客户端应用程序向一个节点服务器发送消息,在那里我以OSC的形式转发消息,我在Touchdesigner中接收到该消息。 我想知道有没有更好的方法?基本上,我想直接向Touchdesigner应用程序发送消息,该应用程序
我有一个在Payara 4.1.2.173上运行的应用程序。应用程序应该发送和接收JMS消息,因此,我使用Apache ActiveMQ Artemis。我选择ActiveMQ Artemis是因为ActiveMQ只支持JMS1.1,而ActiveMQ Artemis支持JMS2.0。 但是我觉得奇怪的是,ActiveMQ Artemis没有提供资源适配器(.rar文件),而ActiveMQ却提供