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

时间:2016-04-02 18:01:27

标签: php node.js sockets tcp

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

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

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

的原因

现在,对于这样的应用程序来说,更好的选择是将Node.js用作PHP吗?我已经有了一个良好的基础来开始使用AngularJS + PHP,但PHP就是问题所在。我没有使用node.js的经验,但我愿意接受它。

1 个答案:

答案 0 :(得分:1)

是的,我建议你使用Node.js.你可以拿起网络模块。

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");