用于通信TCP的应用程序-PHP或Node.js


App to communicate TCP - PHP or Node.js

我需要创建一个可以与CasparCG服务器通信的web应用程序。服务器接受具有基本IP&端口。然后通过连接发送字符串,然后触发内容。

我偶然发现了一个两难的选择,那就是使用PHP作为主要的通信工具,因为每当PHP读取带有fread的响应时,它就会与服务器断开连接。脚本结束,因此连接终止。

我对任何语言的PHP或TCP连接的这一部分都没有什么经验。我不知道断开连接是否会影响整体性能,使每个请求都延迟,因为C#TCP连接似乎能够在应用程序关闭或连接中止时保持活动状态并断开连接。这就是我读到node.js.的原因

现在,对于这样的应用程序,更好的选择是使用Node.js作为PHP吗?我已经有了一个很好的基础来开始AngularJS+PHP,但PHP是个问题。我没有使用node.js的经验,但我愿意尝试一下。

是的,我建议你使用Node.js。你可以选择Net模块。

var s = require("net");
var cn = s.createConnection({port: YourPortHere, host: YourHostHere}, callback); // createConnection and connect should be the same (cn is instance of net.Socket)
function callback(){
    // Called when the connection is ready and so cn can be used
}
cn.on("data", function(data){
    // Handle messages received by server (data is instance of Buffer)
    if(data.toString("ascii") == "ping"){
        s.write("pong!");
    }
});
cn.on("end", function(){
    // Disconnected
});

正如你所看到的,使用起来非常简单。注意:如果您需要发送或解析特殊字符,您可以更改编码,例如,在接收回调的第10行:

if(data.toString("utf8") == "èùà") // BTW, the parameter is usually set by default to utf8, so there is no need to provide that, in theory.

发送特殊字符

cn.setEncoding("utf8");