2014-10-08 19 views
13

तो आखिरकार मैंने नोड.जेएस को एक शॉट देने का फैसला किया। मैंने बर्फ तोड़ने के लिए एक छोटे से चैट ऐप के साथ जाने का फैसला किया। मैं जिस ट्यूटोरियल का अनुसरण कर रहा हूं वह सीधे socket.io साइट से है।सॉकेट.ओ चैट ट्यूटोरियल ठीक से काम नहीं कर रहा है

http://socket.io/get-started/chat/

मैं शब्द के लिए ट्यूटोरियल शब्द अनुसरण कर रही हूं और यहां तक ​​कि स्रोत में कॉपी और कोड पेस्ट करने की कोशिश की है और जब मैं पाठ लिखने और उसे भेज नहीं जहां हो रही है। यह मेरे कमांड प्रॉम्प्ट में आ रहा है, हालांकि यह नहीं है।

मेरे पास उपयोगकर्ता से जुड़े हुए और उपयोगकर्ता डिस्कनेक्ट किए गए संदेश दिखाई दिए थे, लेकिन मैं इस पर फंस गया हूं क्योंकि मैंने ट्यूटोरियल चरण-दर-चरण का पालन किया है।

Index.js

var app = require('express')(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 

app.get('/', function(req, res) { 
    res.sendFile('/chat/index.html'); 
}); 

io.on('connection', function(socket){ 
    socket.on('chat message', function(msg){ 
     console.log('message: ' + msg); 
    }); 
}); 

http.listen(3000, function() { 
    console.log('Listening on *:3000'); 
}); 

Index.html:

<!DOCTYPE html> 
<html> 
<head lang="en"> 
    <meta charset="UTF-8"> 
    <title>Chat</title> 

    <script src="/socket.io/socket.io.js"></script> 
    <script src="http://code.jquery.com/jquery-1.11.1.js"></script> 
    <script> 
     var socket = io(); 
     $('form').submit(function(){ 
      socket.emit('chat message', $('#m').val()); 
      $('#m').val(''); 
      return false; 
     }); 
    </script> 

    <style> 
     * { margin: 0; padding: 0; box-sizing: border-box; } 
     body { font: 13px Helvetica, Arial; } 
     form { background: #000; padding: 3px; position: fixed; bottom: 0; width: 100%; } 
     form input { border: 0; padding: 10px; width: 90%; margin-right: .5%; } 
     form button { width: 9%; background: rgb(130, 224, 255); border: none; padding: 10px; } 
     #messages { list-style-type: none; margin: 0; padding: 0; } 
     #messages li { padding: 5px 10px; } 
     #messages li:nth-child(odd) { background: #eee; } 
    </style> 
</head> 
<body> 

    <ul id="messages"></ul> 

    <form action=""> 
     <input id="m" autocomplete="off" /><button>Send</button> 
    </form> 

</body> 
</html> 

मैं यह सोचते हैं रहा हूँ मैं कुछ जहां तक ​​फाउल लेकिन यह नहीं दिखाई दे रहा है, भले ही मैं कोशिश करते हैं और कॉपी और पेस्ट करें था। इसके अलावा, अगर यह मायने रखता है कि मैं विंडोज 8.1 और क्रोम का उपयोग कर रहा हूं। मैंने चारों ओर जांच की और इस समस्या का कोई जवाब नहीं मिला। कोई भी मदद बहुत अच्छी रहेगी।

संपादित करें: समस्या jQuery के साथ थी, किसी कारण से यह प्रतिक्रिया नहीं दे रही है। वेनिला में लिपि को फिर से लिखने के बाद यह इरादे के रूप में काम करता है।

Index.js - जावास्क्रिप्ट

<script> 
    var socket = io(); 

    function sendMessage() { 
     var msg = document.getElementById('m'); 

     socket.emit('message', msg.value); 
     msg.value = ''; 
     return false; 
    } 
</script> 

HTML:

<form action="" onsubmit="javascript:sendMessage();"> 
     <input id="m" autocomplete="off" /><button>Send</button> 
</form> 
+0

क्या आप कोई सर्वर और क्लाइंट-साइड कंसोल आउटपुट प्रदान कर सकते हैं? – jmar777

+0

दोनों तरफ कोई त्रुटि नहीं। क्या मैं निराशाजनक खोज रहा हूँ। –

उत्तर

14

आप अपने कंसोल में टाइप करके क्रोम में Socket.IO के लिए लॉगिंग सक्रिय कर सकते हैं:

localStorage.debug = "socket.io-client:socket" 

और पर सर्वर पक्ष:

DEBUG=* node yourfile.js 

इसके अलावा, आप चाहते हैं स्क्रिप्ट निष्पादित करने के लिए जब दस्तावेज़, तैयार है आदेश jQuery उपयोग करें ताकि आप इसे थोड़ा देरी करने के लिए की जरूरत है:

$(document).ready(function() { 
    var socket = io(); 
    $('form').submit(function(){ 
     socket.emit('chat message', $('#m').val()); 
     $('#m').val(''); 
     return false; 
    }); 
}); 
+0

मुझे केवल "सॉकेट.ओ-क्लाइंट मिल रहा है: सॉकेट ट्रांसपोर्ट खुला है - कनेक्टिंग + 0 एमएमएस"। और कुछ नहीं। यह सब स्थानीयहोस्ट पर चल रहा है। –

+0

सर्वर की ओर क्या है? – xShirase

+0

"index.js में ब्रेक: 1" –

6

एक छोटी सी इस तथ्य के बाद, लेकिन मैं था एक ही मुद्दा और इसे एक लोड ऑर्डर मुद्दे पर वापस बांध दिया। <head> की बजाय <body> के नीचे फ़ॉर्म पर बाध्यकारी कोड को बस ले जाएं। यह थोड़ा भ्रामक है क्योंकि ट्यूटोरियल में पहले के कुछ कोड सीधे <head> में थे।

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