我正在使用谷歌托管的this网络套件
var host = "ws://localhost:12345/websocket/server.php";
try{
socket = new WebSocket(host);
log('WebSocket - status '+socket.readyState);
socket.onopen = function(msg){ log("Welcome - status "+this.readyState); };
socket.onmessage = function(msg){ log("Received: "+msg.data); };
socket.onclose = function(msg){ log("Disconnected - status "+this.readyState); };
}
catch(ex){ log(ex); }
这与remotehost有关吗?
var host = "ws://example.com:12345/websocket/server.php";
我想使用websockets使用CURL进行POST更改。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://xxxx.com/ccc.php");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_CAINFO, "esoftcareers.crt");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
http_build_query(array('PHPSESSID' => $id ,'query' => $resultQuery,'operator' => $operator,'database' => DATABASE)));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec ($ch);
curl_close ($ch);
答案 0 :(得分:1)
首先让我从这开始回答:
我想使用websockets使用CURL进行POST更改。
WebSocket首先是基于浏览器(非服务器到服务器)应用程序的protocol,需要与服务器进行双向通信。您希望在curl中使用use http/https protocols
(因为post
是HTTP协议的方法),这是TCP上的层。 WebSocket也通过TCP layered。所以你想要用另一个TCP层。现在你不能这样做,因为php curl没有support websocket协议。而且我认为它在未来仍然是不可改变的。
同样post
是HTTP协议的方法,它具有正文并且有一个响应。 WebSocket是没有主体的协议,它使用一系列帧。所以在websocket协议中没有类似post
方法的东西,这就是他的特色。
你不能发送一些服务器而忘记它在websocket中,因为socket意味着沟通。使用websocket时,您必须与服务器通信。在HTTP中通过AJAX,您可以向服务器发送内容并使用异步回调来处理响应。在websocket中,如果你关闭它,你将丢失所有数据作为回应。
您可以使用长拉请求通过curl模拟websocket。但它仍然是HTTP协议,而不是websocket。所以现在curl不能使用websocket协议。
第二个。关于websocket协议源(通过跨域)。是的,websocket可以使用跨域,因为它use基于源的安全模型。因此,如果您尝试通过域中的WebSocket打开与Web服务器的连接,Origin
请求头服务器中将缺少此错误。{1}}将返回appropriate HTTP错误。通常默认为403 HTTP错误。在其他情况下,一切都必须没问题。
答案 1 :(得分:0)