2011-12-20 10 views
5

मेरे पास PHP के साथ सॉकेट आईओ का उपयोग करने के संबंध में कुछ प्रश्न हैं और ऐसे में, मैं नोडजेस/सॉकेट आईओओ में नया हूं इसलिए मुझे बहुत कम पता है, मैंने पिछले कुछ दिनों में इसका उपयोग करना शुरू कर दिया है और मैं उस बिंदु पर जा रहा हूं मैं इसे अपनी वेबसाइट पर कार्यान्वित कर दूंगा (अभी तक मैं अभी छोटे परीक्षण उदाहरण बना रहा हूं)।नोड.जेएस + सॉकेट आईओ + अपाचे + PHP यूआरएल से पोर्ट हटा दें?

प्रश्न: वर्तमान में मुझे इसे देखने के लिए अपने स्थानीयहोस्ट में बंदरगाह जोड़ना है और यह काम करना है, जाहिर है, जब मैं लाइव वेबसाइट पर हूं तो मैं यह नहीं कर सकता, और जब मैं उपयोग करता हूं तो मैं यह भी नहीं कर सकता PHP पेज (केवल एचटीएमएल के साथ उदाहरण कर रहे हैं) यदि मैं अपने सॉकेट आईओ सर्वर के लिए पोर्ट 4000 का उपयोग कर रहा हूं तो मुझे यहां जाना होगा: लोकलहोस्ट: 4000, हालांकि मुझे यहां जाने में सक्षम होना चाहिए: localhost: 8888/mysitefolder (8888 मेरे एमएएमपी के लिए बंदरगाह है, PHP और सबकुछ के लिए) मैंने उन प्रश्नों में देखा है जहां लोगों ने इसे हल किया है लेकिन मैं इसे अपने स्वयं के लिए काम करने में असमर्थ हूं।

chat.js

var app = require('express').createServer(), 
     io = require('socket.io').listen(app); 

app.listen(4000); 


var users = []; 

app.get('/', function (req, res) { 
res.sendfile(__dirname + '/index.html'); 
}); 

io.sockets.on('connection', function (socket) { 

socket.emit('connected'); 

socket.on('userID', function (userID) { 
users.push(userID); 
}); 


socket.on('message', function (message) { 
socket.broadcast.emit('message-response', { data: message}); 
}); 

}); 

index.html

<title>Testing</title> 
<script src="/socket.io/socket.io.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script> 

function mktime(){ 
    var newDate = new Date; 
    return newDate.getTime(); 
    } 

    function appendMessage(data) 
    { 
    $("body").append(data+"<br />"); 
    } 

    var socket = io.connect('http://localhost:4000'); 
    socket.on('connected', function() { 

    //select id from database in real environment 
    socket.emit("userID", mktime()); 

    }); 



    socket.on('message-response', function (message) { 

    appendMessage(message.data); 

}); 


    $(document).ready(function(){ 
     $('#input').keypress(function(event) { 
     if (event.keyCode != 13) return; 
      var msg = $("#input").val(); 

      if (msg) { 


     socket.emit('message', msg); 
     appendMessage(msg); 

     $("#input").val('').focus(); 
     } 
    }); 
    }); 



    </script> 

    <body> 
    <input type="text" id="input"><br> 
    </body> 
+0

स्वतः डिटेक्ट किया जाएगा आप 'मैं पर जाने के लिए सक्षम होना चाहिए: स्थानीय होस्ट: 8888/mysitefolder' से क्या मतलब है? आपको बस इतना करना है कि जेएस फ़ाइल को सही तरीके से संदर्भित करना है: "localhost: 4000/socket.io/socket.io.js" और यही वह है। आपको एक्सप्रेस सर्वर की भी आवश्यकता नहीं है, आप जेएस कोड के साथ इंडेक्स फ़ाइल की सेवा कर सकते हैं। – alessioalex

+0

अच्छी लोकहोस्ट: 8888 वह जगह है जहां एमएएमपी चल रहा है, PHP और सबकुछ के लिए, mysitefolder केवल php फ़ाइलों के काम के लिए फ़ोल्डर है। भी, मैं अपनी दो फाइलों में क्या बदलूं? मैंने बस कोशिश की और एक त्रुटि है। (जैसे मैंने कहा, मैं इसके साथ नया हूं, इसलिए मुझे यकीन नहीं है कि सब कुछ कैसे काम करता है) –

+0

कभी नहीं, मुझे यह काम मिल गया। धन्यवाद। –

उत्तर

3

मुझे लगता है कि आप का मतलब है कि आप हार्ड कोड को एक बंदरगाह या में यूआरएल नहीं करना चाहती:

यहाँ मेरी कोड है ग्राहक? क्या वह सही है?

सॉकेट.io 0.8.7 में, आपको इसे प्रदान करने की आवश्यकता नहीं है। तुम बस निम्न का उपयोग कर सकते हैं और यह

var socket = io.connect(); 
+0

यह मेरे लिए काम नहीं करता है। –

+0

हाय डायलन, क्या मुझे आपका अनुरोध सही मिला? मेरे पास emit का उपयोग कर एक कामकाजी socket.io है जहां मैं यूआरएल और पोर्ट प्रदान नहीं करता हूं। मैं केवल सर्वर पर पोर्ट प्रदान नहीं करता क्लाइंट -

+0

यह मेरा प्रारंभिक मुद्दा नहीं था, मेरा प्रारंभिक मुद्दा यह था कि मैंने सोचा था कि आपको करना था बार में यूआरएल में बंदरगाह है। मुझे एकमात्र कारण पता नहीं था कि इसके बिना काम नहीं किया गया क्योंकि यह socket.io स्क्रिप्ट का संदर्भ देता था। समाधान बदल रहा था: से:

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