2012-03-30 22 views
39

का उपयोग कर क्लाइंट से सर्वर से कनेक्ट करना मैं node.js और इसके एडॉन्स के लिए अपेक्षाकृत नया हूं, इसलिए यह शायद एक beginnerquestion है।सॉकेट.io

मैं वेबसर्वर पर एक साधारण HTML पृष्ठ प्राप्त करने की कोशिश कर रहा हूं जो websocket.io के साथ node.js चलाने वाले किसी भिन्न सर्वर से कनेक्ट हो रहा है।

मेरे कोड इस तरह दिखता है:

ग्राहक

<script src="socket.io/socket.io.js"></script> 
<script> 
    // Create SocketIO instance, connect 

    var socket = new io.Socket(); 

    socket.connect('http://127.0.0.1:8080'); 

    // Add a connect listener 
    socket.on('connect',function() { 
     console.log('Client has connected to the server!'); 
    }); 
    // Add a connect listener 
    socket.on('message',function(data) { 
     console.log('Received a message from the server!',data); 
    }); 
    // Add a disconnect listener 
    socket.on('disconnect',function() { 
     console.log('The client has disconnected!'); 
    }); 

    // Sends a message to the server via sockets 
    function sendMessageToServer(message) { 
     socket.send(message); 
    }; 
</script> 

serverside

// Require HTTP module (to start server) and Socket.IO 
var http = require('http'); 
var io = require('socket.io'); 
var port = 8080; 

// Start the server at port 8080 
var server = http.createServer(function(req, res){ 
    // Send HTML headers and message 
    res.writeHead(200,{ 'Content-Type': 'text/html' }); 
    res.end('<h1>Hello Socket Lover!</h1>'); 
}); 

server.listen(port); 

// Create a Socket.IO instance, passing it our server 
var socket = io.listen(server); 

// Add a connect listener 
socket.on('connection', function(client){ 
    console.log('Connection to client established'); 

    // Success! Now listen to messages to be received 
    client.on('message',function(event){ 
     console.log('Received message from client!',event); 
    }); 

    client.on('disconnect',function(){ 
     clearInterval(interval); 
     console.log('Server has disconnected'); 
    }); 
}); 

console.log('Server running at http://127.0.0.1:' + port + '/'); 

को शुरू सर्वर काम करता है ठीक है और अपने ब्राउज़र भी काम करता है में http://localhost:8080 चल रहा है, लौटने उम्मीद के अनुसार 'हैलो सॉकेट प्रेमी'। लेकिन मैं सॉकेट के लिए एक अलग पेज बात करना चाहता हूं, नोड.जे.एस. से नहीं चला।

लेकिन जब मैं इसे चलाने, कुछ नहीं होता और क्रोम कंसोल रिटर्न:

Failed to load resource   http://undefined/socket.io/1/?t=1333119551736 
Failed to load resource   http://undefined/socket.io/1/?t=1333119551735 

मैं इस पूरे दिन में किया गया है। कोई मदद?

उत्तर

34

क्या आपने socket.io स्क्रिप्ट को किसी संबंधित URL से नहीं लोड करने का प्रयास किया है?

आप उपयोग कर रहे हैं:

<script src="socket.io/socket.io.js"></script> 

और:

socket.connect('http://127.0.0.1:8080'); 

आप प्रयास करना चाहिए:

<script src="http://localhost:8080/socket.io/socket.io.js"></script> 

और:

socket.connect('http://localhost:8080'); 

स्विच localhost:8080 जो भी आपके वर्तमान सेटअप के लिए फिट बैठता है।

इसके अलावा, आपके सेटअप के आधार पर, आपको किसी भिन्न डोमेन (समान-मूल नीति) से क्लाइंट पेज लोड करते समय सर्वर से संचार करने में कुछ समस्याएं हो सकती हैं। इसे विभिन्न तरीकों से दूर किया जा सकता है (इस उत्तर के दायरे के बाहर, google/SO it)।

<script src="/socket.io/socket.io.js"></script> 
देखें/नियंत्रक में

तो बस करना:

10

आप यकीन है कि आप आगे जोड़ने के अपने लिंक से पहले स्लेश socket.io को बनाने की जरूरत है

var socket = io.connect() 

कि आपकी समस्या का समाधान करना चाहिए ।

+9

'var सॉकेट = io()' –

संबंधित मुद्दे