socket.io硬编码vsdynamic连接url

为什么大多数教程,示例和问题都使用本地IP或localhost (或任何其他硬编码path):

 var socket = io.connect('http://127.0.0.1:3700'); 

而不是简单地:

 var socket = io.connect(document.location.protocol+'//'+document.location.host); 

甚至:

 var socket = io.connect(); 

是否有任何风险使它像这样dynamic? 有没有更好的方法使我的脚本在本地和在生产中工作,而不必每次都改变这个值?

我没有看到任何风险,如果你有一个dynamic连接的url,而不是一个硬编码的。

在我看来,像第一个例子中的硬编码的URL更容易让初学者理解。 第二个例子可能会令人困惑。 (其实我也必须检查,如果document.location.host包含端口号或不)。 这就是为什么大多数示例和教程都使用硬编码变体,我猜。

如果第三个示例在您的开发和生产环境中都可以使用,则应该使用它。 但是,如果套接字运行在与应用程序其他部分不同的端口和/或主机上,则不起作用,因此需要在脚本的某个位置对其进行硬编码。