簡體   English   中英

Nodejs&socket io錯誤:聽EADDRINUSE

[英]Nodejs & socket io Error: listen EADDRINUSE

我正在嘗試與Node.js和socket.io進行聊天

現在這是我的場景我正在使用ubuntu 12.04用戶,我在桌面上有文件夾pp

在我內部服務器文件server.js

這是客戶:

$(document).ready(function() {
    var urlServer = location.origin + ':8081';
    var socket = io.connect(urlServer);
});

$(document).ready(function() {
    var urlServer = location.origin + ':8081';
    var socket = io.connect(urlServer);

    $("#boton").on('click', function() {
        var mensaje = $("#mensaje").val();
        socket.emit("mensaje", {msg: mensaje});
    });

    socket.on("mensaje", function(msg) {
        console.log("hemos recibido un mensaje", msg);
    });
});

在這里服務器

var server  = require('http').createServer(),
    sio      = require('socket.io'),
    port    = 8081;
server.listen(port);
var io = sio.listen(server, { log:true });
var channels = {};
io.sockets.on('connection', function (socket) {
    console.log("Cliente conectado");

    socket.on('mensaje', function (msg) {
        console.log(msg);
    socket.broadcast.emit('mensaje', msg);
    });

});
console.log('1- Escuchando en http://localhost:' + port , "");
console.log("");

現在在同一文件夾中我有一個像html文件

<!DOCTYPE html>
<html>
<head>
    <script src="../jquery.js"></script>
    <script src="../node_modules/socket.io/node_modules/socket.io-client/dist/socket.io"></script>
    <script src="clientechat.js.js"></script>
    <title>Chat con Node</title>
</head>
<body>

    <div id="mensajes"></div>
    <input type="text">
    <input type="submit" id="boton">

</body>
</html>

當我試圖運行app.js使用節點時

node server.js

我收到了錯誤

   warn  - error raised: Error: listen EADDRINUSE

我嘗試重新啟動,但它不起作用

請告訴我,我做錯了什么。

這意味着您嘗試綁定服務器的地址正在使用中。 做這個;

Command:
ps -eaf|grep node

Output:
root     28029 27332  0 14:25 pts/2    00:00:03 node myVNC.js

這將顯示節點正在運行的進程ID,在本例中為“28029”

現在使用;殺死此進程id;

kill -9 28029

如果您根本無法啟動應用程序,則可能有一個已在使用給定端口的應用程序。 另一個選擇是嘗試使用另一個端口,看看你是否可以啟動它。

檢查@Faisal Ameers回答linux命令以使用端口查找程序。

使用Windows上的端口查看此帖子以查找程序: https//stackoverflow.com/a/48199/1958344

這個適用於OS X: https//stackoverflow.com/a/30029855/1958344

殺死服務器並使用kill.sh文件重啟的最佳方法

也許是因為你正在調用listen(port)兩次。 第二個listen()可能正在拋出EADDRINUSE,因為第一個listen()已經在使用端口了。

server.listen(port); var io = sio.listen(server, { log:true });

看起來您的服務器設置不正確。 看看這個如何與你的http服務器一起使用socket.io的例子: Nodejs&socket io:warn - 引發錯誤:錯誤:聽EADDRINUSE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM