2015-06-25 10 views
6

मेरे पास एक ऐप है जहां मैं ग्राहकों के लिए कतार प्रणाली बनाने की कोशिश कर रहा हूं। मैं इसे बनाने की कोशिश कर रहा हूं ताकि जब कोई ग्राहक कतार में शामिल हो जाए, तो यह शामिल होने के स्टोर कर्मचारियों को सूचित करता है और चलिए उन्हें पाने के लिए जानते हैं और जितनी जल्दी हो सके ग्राहक की सहायता करते हैं।सॉकेट.ओ + एक्सप्रेस + नोड + कोणीय नोटिफिकेशन

मुझे लगता है कि सॉकेट आईओ को मेरे सामने के अंत में बात करने के लिए बिल्कुल नहीं मिल रहा है।

यहां मेरे पास कोड है, और मैं सॉकेट को पुस्तकालय के रूप में सॉकेट को पहचानने के लिए भी नहीं प्राप्त कर सकता। मैंने 3 अलग-अलग ट्यूटोरियल्स का पालन किया है, और उन सभी को आजमाया है, लेकिन मैं नहीं देख सकता कि मेरे सर्वर कोड में क्या गलत किया जा रहा है।

यहाँ मैं अपने सर्वर कि Socket.io से संबंधित है में क्या कर रहा है

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


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

    socket.emit('connection', "Connection created.") 
    console.log("Socket.io is GO"); 

    socket.on('add customer', function(customer){ 
     console.log("Customer added", customer); 

    }) 

    socket.on('notification', function(data) { 
     console.log("NEW CUSTOMER IN THE QUEUE", data); 
    }); 

}); 

मैं इसे अपने सर्वर में चलाने के लिए प्राप्त नहीं कर पा रहे, और जब यह खत्म हो गई थी, उसने ऐसा नहीं किया किसी भी सॉकेट.ऑन घटनाओं को दिखाएं जो मेरे पास थीं और यह कंसोल नहीं करेगा। कुछ भी लॉग इन करें।

मैं क्या गलत कर रहा हूं? क्या किसी ने अभिव्यक्ति और कोणीय के साथ अच्छी तरह से खेलने के लिए सफलतापूर्वक सॉकेट प्राप्त किया है?

+0

क्या आपने अपना सर्वर सुनो मोड पर रखा है? –

उत्तर

11

लग रहा है अपने कोड की तरह अधूरा है या हो सकता है आप अच्छी तरह से लागू नहीं किया।

मैंने अपनी आवश्यकता को दोहराने की कोशिश कर angular.js, express, और socket.io का उपयोग करके एक उदाहरण बनाया है।

public/index.html

<!doctype> 
<html ng-app="sampleApp"> 
    <head> 
    </head> 

    <body ng-controller="IndexController"> 
    <label>Please enter your name: </label> 
    <input ng-model="currentCustomer.name"/> 
    <button ng-click="join()">Join</button> 
    <br/> 

    <h1>New Customers: </h1> 
    <ul> 
     <li ng-repeat="customer in newCustomers">{{customer.name}}</li> 
    </ul> 

    <script src="https://cdn.socket.io/socket.io-1.3.5.js"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.1/angular.js"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.1/angular-route.js"></script> 
    <script src="app.js"></script> 
    </body> 

</html> 

public/app.js

:

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

app.use(express.static(__dirname + '/public')); 

io.on('connection', function(socket) { 
    console.log('new connection'); 

    socket.on('add-customer', function(customer) { 
    io.emit('notification', { 
     message: 'new customer', 
     customer: customer 
    }); 
    }); 
}); 

server.listen(4041, function() { 
    console.log('server up and running at 4041 port'); 
}); 

तो मैं निम्न फ़ाइलों के साथ एक सार्वजनिक फ़ोल्डर बनाया:

यह अपने सर्वर, app.js है

var app = angular.module('sampleApp', ['ngRoute']); 

app.config(['$routeProvider', function($routeProvider) { 
    $routeProvider.when('/', { 
    templateUrl: '/index.html' 
    }); 
}]); 

app.factory('socket', ['$rootScope', function($rootScope) { 
    var socket = io.connect(); 

    return { 
    on: function(eventName, callback){ 
     socket.on(eventName, callback); 
    }, 
    emit: function(eventName, data) { 
     socket.emit(eventName, data); 
    } 
    }; 
}]); 

app.controller('IndexController', function($scope, socket) { 
    $scope.newCustomers = []; 
    $scope.currentCustomer = {}; 

    $scope.join = function() { 
    socket.emit('add-customer', $scope.currentCustomer); 
    }; 

    socket.on('notification', function(data) { 
    $scope.$apply(function() { 
     $scope.newCustomers.push(data.customer); 
    }); 
    }); 
}); 
+0

यह मुझे काम करने के करीब मिला। अब मैं बता सकता हूं कि मेरा सॉकेट कनेक्शन कोणीय से मेरे सर्वर पर जाने का प्रयास कर रहा है, लेकिन मेरा सर्वर कनेक्शन नहीं देख रहा है और मेरे पास मौजूद किसी भी console.logs को पिंग नहीं कर रहा है। –

+0

क्या आप अपने कोणीय ऐप और सर्वर एप की कॉन्फ़िगरेशन साझा कर सकते हैं? – Wilson

+1

हाँ, आप किन भागों को देखना चाहते हैं? मैंने एक सॉकेट फैक्ट्री बनाई, जिसे मेरे ग्राहकCtrl में कहा जाता है, ने एडकैस्टर फ़ंक्शन को एक बटन से लिंक किया है, और वह मेरे सर्वर पर वापस पिंग कर रहा है। 'io.on ('कनेक्शन', समारोह (सॉकेट) { console.log ('नए कनेक्शन', सॉकेट); socket.on ('addCustomer', समारोह (ग्राहक) { io.emit (' अधिसूचना ', { संदेश:' नया ग्राहक ', ग्राहक: ग्राहक }); }); }); server.listen (4041, फ़ंक्शन() { console.log ('सॉकेट।आईओ सर्वर ऊपर और पोर्ट 4040 पर चल रहा है '); }); ' यह मेरा सर्वर कोड है। बाकी आपके पास बहुत कुछ है। –

1

आपको अपना सॉकेट.ओ सर्वर स्थापित करने की आवश्यकता है ताकि वह एक विशिष्ट पोर्ट पर सुन सके; इसे सुनने के बिना, यह ग्राहकों के कनेक्शन और संदेशों को emmitting के लिए नहीं देख सकता है। के रूप में इसे ठीक करने के इस प्रकार आप अपने कोड बदलना चाहिए:

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

//Existing Code 

server.listen(1337, function(){ 
    console.log('listening on *:1337'); 
}); 
संबंधित मुद्दे