2013-02-01 29 views
12

मैं socket.ioNodeJS और सॉकेट कब: चेतावनी दी है - त्रुटि मिली: त्रुटि: सुनने EADDRINUSE

साथ Node.js को एक कोशिश दे रहा हूँ अब यहाँ मेरे परिदृश्य मैं ubuntu उपयोगकर्ता 12.04 am जाता है और मैं पर फ़ोल्डर पीपी है डेस्कटॉप

कि अंदर मैं putted हूँ सर्वर फ़ाइल यानी app.js

यहां ऐसी सामग्री

var fs = require('fs') 
    , http = require('http') 
    , socketio = require('socket.io'); 

var server = http.createServer(function(req, res) { 
    res.writeHead(200, { 'Content-type': 'text/html'}); 
    res.end(fs.readFileSync(__dirname + '/index.html')); 
}).listen(8080, function() { 
    console.log('Listening at: http://localhost:8080'); 
}); 

socketio.listen(server).on('connection', function (socket) { 
    socket.on('message', function (msg) { 
     console.log('Message Received: ', msg); 
     socket.broadcast.emit('message', msg); 
    }); 
}); 

अब एक ही फ़ोल्डर मैं की तरह एक और फ़ाइल index.html है में है

<html> 
<head> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
    <script src="/socket.io/socket.io.js"></script> 
    <script> 
     $(function(){ 
      var iosocket = io.connect(); 

      iosocket.on('connect', function() { 
       $('#incomingChatMessages').append($('<li>Connected</li>')); 

       iosocket.on('message', function(message) { 
        $('#incomingChatMessages').append($('<li></li>').text(message)); 
       }); 
       iosocket.on('disconnect', function() { 
        $('#incomingChatMessages').append('<li>Disconnected</li>'); 
       }); 
      }); 

      $('#outgoingChatMessage').keypress(function(event) { 
       if(event.which == 13) { 
        event.preventDefault(); 
        iosocket.send($('#outgoingChatMessage').val()); 
        $('#incomingChatMessages').append($('<li></li>').text($('#outgoingChatMessage').val())); 
        $('#outgoingChatMessage').val(''); 
       } 
      }); 
     }); 
    </script> 
</head> 
<body> 
Incoming Chat: <ul id="incomingChatMessages"></ul> 


<input type="text" id="outgoingChatMessage"> 
</body> 

जब मैं

node app.js 

मैं त्रुटि

warn - error raised: Error: listen EADDRINUSE 

मैं कुछ दस्तावेज़ के माध्यम से जाने के लिए और है कि बंदरगाह पाया व्यस्त हैं हो रही है की तरह app.js नोड का उपयोग चलाने के लिए कोशिश कर रहा हूँ इसलिए सिस्टम को पुनरारंभ किया लेकिन फिर भी मुझे एक ही त्रुटि मिल रही है।

कृपया मुझे बताएं कि मैं क्या गलत कर रहा हूं।

+0

कोई अन्य पोर्ट आज़माएं - शायद किसी अन्य एप्लिकेशन द्वारा '8080' का उपयोग किया जाता है। – pimvdb

+0

मुझे वास्तव में यह समस्या है, मुझे कोई समाधान नहीं मिल रहा है। – Tarek

+0

ऐसा प्रतीत होता है कि मैंने server.js फ़ाइल में पोर्ट को संपादित नहीं किया है, इसलिए मैंने त्रुटि पारित की है, लेकिन अब मैं इसे सही ढंग से कनेक्ट नहीं कर सकता। – Tarek

उत्तर

6

एक और बंदरगाह आज़माएं। 8080 आमतौर पर टोमकैट द्वारा प्रयोग किया जाता है उदा।

netstat -a -v का उपयोग यह जानने के लिए करें कि वर्तमान में कौन से पोर्ट का उपयोग किया जाता है।

+0

अभी भी वही – masterofdestiny

+0

प्राप्त कर रहा है क्या आप 'netstat -a -v' या' nmap localhost' के आउटपुट को प्रिंट कर सकते हैं। – Charles

+0

nmap स्थानीय होस्ट 22/टीसीपी खुला ssh 25/टीसीपी खुला smtp 53/टीसीपी खुला डोमेन 110/टीसीपी खुला pop3 139/टीसीपी खुला netbios-एसएसएन 143/टीसीपी खुला imap 445/टीसीपी खुला माइक्रोसॉफ्ट-डी एस 631/टीसीपी खुला IPP 993/टीसीपी खुला IMAPS 995/टीसीपी खुला POP3S 3306/टीसीपी खुला mysql 8080/टीसीपी खुला http-प्रॉक्सी – masterofdestiny

1

यह मेरे लिए लग रहा है कि आपके ग्राहक पक्ष पर होस्ट से कनेक्ट नहीं:

var iosocket = io.connect('http://localhost:8080'); 
+0

तुम ठीक कह रहे हैं, लेकिन इस समस्या को अगर मैं गलत – masterofdestiny

+0

बजाय 'res.end (fs.readFileSync (__ dirname + '/index.html')) की नहीं कर रहा हूँ सर्वर साइड से है,' 'उपयोग readFile' – ashley

1

आप अपने सर्वर से कनेक्ट नहीं कर रहे हैं, यह गलत है:

var iosocket = io.connect(); 

यह सही है:

var iosocket = io.connect('http://localhost:8080'); 

इसके अलावा आपके पोर्ट 8080 का उपयोग आपके सर्वर पर "http-proxy" द्वारा किया जाता है, अन्य पोर्ट को आज़माएं।

1

एक अति-मूर्ख/सरल संभावना यह सुनिश्चित करने के लिए है कि आपके पास एकाधिक टर्मिनल विंडो खुली नहीं हैं। मुझे यह त्रुटि मिली और मुझे एहसास हुआ कि मेरे पास एक दूसरा प्री-मौजूदा कनेक्शन था जिसे मैंने अपना ऐप शुरू कर दिया था। जब मैंने इसे बंद कर दिया और ऐप को पुनरारंभ किया तो त्रुटि दूर हो गई।

+0

मेरे पास पुट्टी और विनस्सिप खुले थे और EADDRINUSE त्रुटि प्राप्त कर रहे थे; जब मैंने बस बंद कर दिया और बस पुट्टी को फिर से शुरू किया, तो मैं नोड-टीएक्स शुरू करने में सक्षम था। – Data

0

तरीका यहां बताया गया है, ताकि आप कोई EADDRINUSE त्रुटि दूसरी बार के लिए आप अपने अनुप्रयोग शुरू की है अप NodeJS एक्सप्रेस + SocketIO सेट कर सकते हैं + के शुरुआती के लिए एक उदाहरण है:

'use strict'; 

// Init 
var http = require('http'); 
var express = require('express'); 
var socketIO = require('socket.io'); 
var cors = require('cors'); 

// Create Server app 
var app = express(); 
var server = http.createServer(app); 
var io = socketIO(server); 

// Socket.io settings 
io.set('browser client minification', true); 
io.set('browser client etag', true); 
io.set('browser client gzip', true); 
io.set('browser client expires', true); 

// Starting Express server 
server.listen(serverPort, function() { 
    console.log(chalk.green('Server is running on localhost:' + serverPort + '...')); 
}); 

// Middleware 
app.use(cors()); 

// Routes 
app.get('/', function(req, res) { 
    res.send("Hello world!"); 
    console.log("Root visited!"); 
    // Broadcast socketIO message inside Express 
    io.emit('new_message', "Hello world!"); 
}); 

// Socket.io 
var connections = []; 
var title = "Untitled"; 

io.sockets.on('connection', (socket) => { 

    socket.once('disconnect',() => { 
     connections.splice(connections.indexOf(socket), 1); 
     socket.disconnect(); 
     console.log('Disconnected: %s. Remained: %s.', socket.id, connections.length) 
    }); 

    // ... 

    connections.push(socket); 
    console.log('Connected: %s. Total: %s', socket.id, connections.length); 
}); 

मुझे लगता है कि यह एक उपयोगी है उदाहरण और मुझे उम्मीद है कि यह किसी ऐसे व्यक्ति की मदद करेगा जिसने इसे सब कुछ स्थापित करने में समस्या का सामना किया है।