Firefox 无法与 ws://localhost:8080/ 上的服务器建立连接

Gau*_*pal 6 javascript websocket node.js

我知道这个问题问了很多次,但我没有得到任何对我有用的答案。所以我发布它。

我有两个文件,一个是 test.html,它是 .

<script src="js/jquery-2.1.4.min.js"></script>
<script type="text/javascript">

$(function () {
  // if user is running mozilla then use it's built-in WebSocket
  window.WebSocket = window.WebSocket || window.MozWebSocket;

  var connection = new WebSocket('ws://localhost:8080/');

  connection.onopen = function () {
    // connection is opened and ready to use
    alert('connection Open');
  };

  connection.onerror = function (error) {
    // an error occurred when sending/receiving data
    alert('Error');
  };

  connection.onmessage = function (message) {
    alert('Message');

  };
});

</script>
Run Code Online (Sandbox Code Playgroud)

还有一个 nodejs 文件,它是

var WebSocketServer = require('websocket').server;
var http = require('http');

var server = http.createServer(function(request, response) {
    console.log((new Date()) + ' Received request for ' + request.url);
    response.writeHead(404);
    response.end();
});
server.listen(8080, function() {
    console.log((new Date()) + ' Server is listening on port 8080');
});


wsServer = new WebSocketServer({
    httpServer: server,

    autoAcceptConnections: false
});
function originIsAllowed(origin) {
 return true;
}

wsServer.on('request', function(request) {
    if (!originIsAllowed(request.origin)) {
      request.reject();
      console.log((new Date()) + ' Connection from origin ' + request.origin + ' rejected.');
      return;
    }

    var connection = request.accept('echo-protocol', request.origin);
    console.log((new Date()) + ' Connection accepted.');
    connection.on('message', function(message) {
        console.log(message);
        connection.sendBytes(message);

    });
    connection.on('close', function(reasonCode, description) {
        console.log((new Date()) + ' Peer ' + connection.remoteAddress + ' disconnected.');
    });
});
Run Code Online (Sandbox Code Playgroud)

当我尝试使用我的 html 文件连接 web-socket 时,它给了我一个错误,即“Firefox 无法在 ws://localhost:8080/ 上建立到服务器的连接”

预先感谢您的帮助。

Fei*_*ell 5

它应该能够找到并连接到服务器,但服务器将拒绝您的请求并关闭,因为request.accept('echo-protocol', request.origin)在您的服务器文件中。

检查nodejs命令提示符的日志。

要解决这个问题只需修改

var connection = new WebSocket('ws://localhost:8080/');
Run Code Online (Sandbox Code Playgroud)

var connection = new WebSocket('ws://localhost:8080/', 'echo-protocol');
Run Code Online (Sandbox Code Playgroud)