我使用javascript连接websocket:
<script>
var socket;
var host = "ws://localhost:8000/socket/server/startDaemon.php";
var socket = new WebSocket(host);
</script>
我收到了错误:
无法在
建立与服务器的连接
var host = "ws://localhost:8000/socket/server/startDaemon.php";
var socket = new WebSocket(host);
我该如何解决这个问题?
注意:我在mozilla中启用了websocket以支持Web套接字应用程序。 当我在chrome中运行时出现错误:
can't establish a connection to the server at ws://localhost:8000/socket/server/startDaemon.php. var socket = new WebSocket(host);
答案 0 :(得分:5)
显然,firefox 4因漏洞而禁用了websockets。引用来自这篇文章:
<强> WebSocket disabled in Firefox 4 强>
最近的发现发现,Websocket使用的协议容易受到攻击。 Adam Barth演示了一些针对该协议的严重攻击,攻击者可以利用该攻击来毒害位于浏览器和Internet之间的缓存。
答案 1 :(得分:3)
我通过此链接跟踪代码解决了我的错误
http://www.flynsarmy.com/2010/05/php-web-socket-chat-application/ 并为响应消息创建了socketWebSocketTrigger.class.php文件,其中代码为
class socketWebSocketTrigger
{
function responseMessage($param)
{
$a = 'Unknown parameter';
if($param == 'age'){
$a = "Oh dear, I'm 152";
}
if($param == 'hello'){
$a = 'hello, how are you?';
}
if($param == 'name'){
$a = 'my name is Mr. websocket';
}
if($param == 'today'){
$a = date('Y-m-d');
}
if($param == 'hi'){
$a = 'hi there';
}
return $a;
}
}
并在'WebSocketServer.php'的send函数中添加了代码,用于调用响应请求消息的“responseMessage”函数
public function send($client, $msg){
$this->say("> ".$msg);
$messageRequest = json_decode($msg,true);
// $action=$messageRequest[0];
$action = 'responseMessage';
$param = $messageRequest[1]['data'];
if( method_exists('socketWebSocketTrigger',$action) ){
$response = socketWebSocketTrigger::$action($param);
}
$msg = json_encode(
array(
'message',
array('data' => $response)
)
);
$msg = $this->wrap($msg);
socket_write($client, $msg, strlen($msg));
}
它运作良好。
答案 2 :(得分:1)
您是否尝试在Firefox中运行客户端?根据{{3}}:
截至2月10日的唯一浏览器 支持websockets是谷歌Chrome 和Webkit Nightlies。从这里获取它 the documentation
尝试在Chrome中运行它,看看它是否适合您。
答案 3 :(得分:1)
首先,你的错误是使用php函数和javascript require_once 'WebSocket.php';
,然后按照以下链接浏览教程。
http://net.tutsplus.com/tutorials/javascript-ajax/start-using-html5-websockets-today/
它工作正常。
谢谢,