2015-10-29 366 views
2

拉我的头发从最近4小时搜索这个简单的代码,用于套接字连接并出错。我也改变了港口,但没有任何效果。WebSocket连接到'ws:// ..'失败:连接建立时出错:net :: ERR_CONNECTION_REFUSED

//create a new WebSocket object. 
     var wsUri = "ws://localhost:9000/demo/server.php"; 
     websocket = new WebSocket(wsUri); 

    websocket.onopen = function(ev) { // connection is open 
     $('#message_box').append("<div class=\"system_msg\">Connected!</div>"); //notify user 
    } 

    $('#send-btn').click(function(){ //use clicks message send button 
     var mymessage = $('#message').val(); //get message text 
     var myname = $('#name').val(); //get user name 

     if(myname == ""){ //empty name? 
      alert("Enter your Name please!"); 
      return; 
     } 
     if(mymessage == ""){ //emtpy message? 
      alert("Enter Some message Please!"); 
      return; 
     } 

     //prepare json data 
     var msg = { 
     message: mymessage, 
     name: myname, 
     color : '<?php echo $colours[$user_colour]; ?>' 
     }; 
     //convert and send data to server 
     websocket.send(JSON.stringify(msg)); 
    }); 

错误:

WebSocket连接到 'WS://本地主机:9000 /演示/ server.php' 失败: 错误在连接建立:网:: ERR_CONNECTION_REFUSED

PHP

$host = 'localhost'; //host 
$port = '9000'; //port 
$null = NULL; //null var 

//Create TCP/IP sream socket 
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); 
//reuseable port 
socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1); 

//bind socket to specified host 
socket_bind($socket, 0, $port); 

//listen to port 
socket_listen($socket); 

//create & add listning socket to the list 
$clients = array($socket); 
+0

你怎么知道你的websocket服务器启动了?您只发布前端代码。 – Andrius

+0

@满意我也分享了php代码。请参阅 –

+0

打开websocket服务器。例如:在windows中打开cmd并输入php -q c:\ path \ server.php –

回答

0

您的PHP使用常规(原始)tcp/ip套接字连接。 Websockets is a protocol with a specific handshake and packet framing ...如果服务器不会说“Websockets”,客户端会提出错误。

P.S.

PHP最初设计为用作HTTP连接的Web应用程序脚本语言,通常使用CGI快速返回一个充当要发送的文件/ html的字符串。

本质上,PHP过程旨在缩短寿命。

我不会推荐使用PHP编写websocket服务器,但您可以查看Ratchet这是一个PHP websocket库,可以帮助您使用PHP构建websocket应用程序。

我建议您考虑为您的Websocket项目使用Ruby,node.js或Python--当您深入了解您的项目时,它将为您节省很多麻烦,并且您可能对面临的任何挑战有更好的社区支持方式。

+0

我怎么知道“如果服务器不会说”Websockets“,客户端会报错。 –

+0

@MohammadFaizanKhan,请参阅我的最新答案,以及Websocket协议规范的链接。我建议你考虑使用Ruby,node.js或者Python来处理你的Websocket项目 - 这会为你节省很多麻烦。 – Myst

2

您并未创建websocket服务器。 这就是你需要的:http://socketo.me/

让websockets在PHP中正常工作是烦人和混乱(特别是,如果你是初学者)。 你可能会在你的头上。

相关问题