为了尽可能地了解TCP套接字和websocket之间的差异,我已经在这些问题中找到了很多有用的信息:
等等...
在我的调查中,我在维基百科上看了这句话:
Websocket与TCP的不同之处在于它启用了消息流而不是字节流
我不完全确定它究竟意味着什么.你有什么解释?
我有一个简单的PHP脚本,我正在尝试跨域CORS请求:
<?php
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: *");
...
Run Code Online (Sandbox Code Playgroud)
但我仍然得到错误:
X-Requested-With不允许请求标头字段Access-Control-Allow-Headers
我缺少什么?
我正在尝试制作一个Cross Origin帖子请求,并且我使用这样的普通Javascript工作:
var request = new XMLHttpRequest();
var params = "action=something";
request.open('POST', url, true);
request.onreadystatechange = function() {if (request.readyState==4) alert("It worked!");};
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.setRequestHeader("Content-length", params.length);
request.setRequestHeader("Connection", "close");
request.send(params);
Run Code Online (Sandbox Code Playgroud)
但我想使用jQuery,但我无法让它工作.这就是我正在尝试的:
$.ajax(url, {
type:"POST",
dataType:"json",
data:{action:"something"},
success:function(data, textStatus, jqXHR) {alert("success");},
error: function(jqXHR, textStatus, errorThrown) {alert("failure");}
});
Run Code Online (Sandbox Code Playgroud)
这导致失败.如果有人知道为什么jQuery不起作用,请让我们都知道.谢谢.
(我正在使用jQuery 1.5.1和Firefox 4.0,我的服务器正在使用正确的Access-Control-Allow-Origin标头进行响应)
我们在Linode盒子上的端口8080上设置了websocket服务器.Chrome和Opera工作得很好.然而,Firefox抱怨操作不安全.
"操作不安全:代码18"
如果我尝试在页面加载之前在Web控制台中创建一个新的WebSocket对象,一切都很好.但是,在页面加载后,某些东西变得棘手,我就再也无法创建对象了.请参阅附带的屏幕截图
我不知道什么操作是不安全的,甚至不知道怎么去诊断这个.
我正在尝试将基于PHP的客户端连接到websocket服务器.
这是我一直在使用的代码,已经在不同的论坛上广泛发布.但由于某种原因,我无法让它发挥作用.
任何帮助,将不胜感激.
$host = 'host'; //where is the websocket server
$port = 443; //ssl
$local = "http://www.example.com/"; //url where this script run
$data = '{"id": 2,"command": "server_info"}'; //data to be send
$head = "GET / HTTP/1.1"."\r\n".
"Upgrade: WebSocket"."\r\n".
"Connection: Upgrade"."\r\n".
"Origin: $local"."\r\n".
"Host: $host"."\r\n".
"Content-Length: ".strlen($data)."\r\n"."\r\n";
////WebSocket handshake
$sock = fsockopen($host, $port, $errno, $errstr, 2);
fwrite($sock, $head ) or die('error:'.$errno.':'.$errstr);
$headers = fread($sock, 2000);
fwrite($sock, "\x00$data\xff" ) or die('error:'.$errno.':'.$errstr);
$wsdata = fread($sock, 2000); //receives the data included in the …Run Code Online (Sandbox Code Playgroud)