Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript SockJS Nodejs服务器未侦听&;呈现html文件_Javascript_Html_Node.js_Server_Sockjs - Fatal编程技术网

Javascript SockJS Nodejs服务器未侦听&;呈现html文件

Javascript SockJS Nodejs服务器未侦听&;呈现html文件,javascript,html,node.js,server,sockjs,Javascript,Html,Node.js,Server,Sockjs,我正在生产环境中编写Node SockJS服务器部署。编写服务器端和客户端代码时,我面对的服务器端没有呈现到所需的“index.html”文件。我在不同的文件夹中使用了编写的客户机{index.js+index.html}和服务器代码{sock_server.js} 我认为遇到的错误是关于文件处理或服务器未在正确的端口上侦听 sock_server.js //Required dependencies var http = require('http'); var sockj

我正在生产环境中编写Node SockJS服务器部署。编写服务器端和客户端代码时,我面对的服务器端没有呈现到所需的“index.html”文件。我在不同的文件夹中使用了编写的客户机{index.js+index.html}和服务器代码{sock_server.js}

我认为遇到的错误是关于文件处理或服务器未在正确的端口上侦听

sock_server.js

  //Required dependencies
    var http = require('http');
    var sockjs = require('sockjs');
    var connect = require('connect');
    var serveStatic = require('serve-static');


    //client list : this object will hold the list of all connected clients

    var clients = {};

     // Broadcast to all clients
    function broadcast(message){
      // iterate through each client in clients object
      for (var client in clients){
        // send the message to that client
        clients[client].write(JSON.stringify(message));
      }
    }

    // create sockjs server
    var echo = sockjs.createServer();

    // on new connection event
    echo.on('connection', function(conn) {

      // add this client to clients object
      clients[conn.id] = conn;

      // on receive new data from client event
      conn.on('data', function(message) {
        console.log(message);
        broadcast(JSON.parse(message));
      });

      // on connection close event
      conn.on('close', function() {
        delete clients[conn.id];
      });

    });

    // Create an http server
    var server = http.createServer();

    // Integrate SockJS and listen on /echo
    echo.installHandlers(server, {prefix:'/echo'});

    // Start server
    server.listen(9990, '0.0.0.0');
    // connect().use(serveStatic(__dirname)).listen(9990);
    console.log('Message listening on port 9990')
如果未注释,则最后第二行将导致以下错误:

$ node sock_server.js
SockJS v0.3.15 bound to "/echo"
Message listening on port 9990
events.js:85
      throw er; // Unhandled 'error' event
            ^
Error: listen EADDRINUSE
    at exports._errnoException (util.js:746:11)
    at Server._listen2 (net.js:1156:14)
    at listen (net.js:1182:10)
    at net.js:1280:9
    at dns.js:85:18
    at process._tickCallback (node.js:355:11)
    at Function.Module.runMain (module.js:503:11)
    at startup (node.js:129:16)
    at node.js:814:3
客户端代码

index.js

// First I need to Create a connection to http://localhost:9999/echo
var sock = new SockJS('http://localhost:9990/echo');
// var fs = require('fs');
// var index = fs.readFileSync('index.html');


// Open the connection
sock.onopen = function() {
  console.log('open');
};

// On connection close
sock.onclose = function() {
  console.log('close');
};

//show the message in text reciever area
// On receive message from server
sock.onmessage = function(e) {
  // Get the content
  var content = JSON.parse(e.data);

  // Append the text to text area (using jQuery)
  $('#chat-content').val(function(i, text){
    return text + 'User ' + content.username + ': ' + content.message + '\n';
  });

};

// Function for sending the message to server
function sendMessage(){
  // Get the content from the textbox
  var message = $('#message').val();
  var username = $('#username').val();

  // The object to send
  var send = {
    message: message,
    username: username
  };

  // Send it now
  sock.send(JSON.stringify(send));
}
index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8"/>
    <title>Sock chat App</title>
  </head>
  <body>
    <textarea id="chat-content" style="width:500px;height:300px"></textarea><br/>
    <input type="text" id="username" placeholder="Choose username"/>
    <input type="text" id="message" placeholder="Enter chat message"/>
    <input type="button" value="Send" onclick="sendMessage()"/>

    <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
    <script src="http://cdn.sockjs.org/sockjs-0.3.min.js"></script>
    <script src="index.js" ></script>
  </body>
</html>

无法理解我做错了什么。

使用
EADDRINUSE
看起来您以前的节点应用程序仍在端口9990上运行

然后

kill -9 PID

我想,情况并非如此,我已经停止了{CTRL+C}“node sock_server.js”,并在对文件进行更改后重新启动。它正在运行并且没有显示EADDRINUSE错误,这是一个基本问题,我无法理解为什么index.html没有被打开/解析。我希望得到更成熟的答案,但我仍然不知道出了什么问题。
ps aux | grep node
kill -9 PID