2016-06-26 2 views
0

Я новичок в Node.js, и у меня есть сайт, написанный на угловой + узелКак использовать Socket.io в проекте угловой + узел

Я нашел код болтовня номер написан на угловой, NodeJS и Socket.io и я хочу добавить его на свой сайт. Но я попал в беду.

Я пытался поставить эти функции в GulpFile.js, но не получилось:

io.on("connection", function(socket) {.. 
socket.on("disconnect"... 

1) Где это правильное место, чтобы поставить их? У меня есть все функции, которые были установлены на сервере и на клиенте. Я просто не знаю, где разместить функции на стороне сервера.

ответ

1

Хорошо, я думаю, вам нужно понять разницу здесь сначала между сервером и интерфейсом. Таким образом, ваш сервер работает на NodeJS, а ваш интерфейс - на угловом. Gulpjs не имеет ничего общего с этими обоими. Чтобы понять, что именно делает глоток, это watch this. Теперь вы хотите создать чат-систему с помощью Socket io. У вас есть код, но теперь вы смущены, куда его поместить. Поэтому, если я прав, вы хотите иметь такую ​​функциональность, как вход в систему на вашем сайте с разными идентификаторами электронной почты, и они хотят общаться друг с другом. Как вы строите эту функцию. Если это действительно ваш вопрос. Прошу прокомментировать ниже. Если нет, пожалуйста, обновите свой вопрос, чтобы было более ясно, чего именно вы хотите достичь, чтобы мы могли вам помочь.

Нет сары, вы не ставите свой код сокета io в файл gulpfile. Вы должны создать контроллер в угловом режиме. Он должен ссылаться на сервер. Так что канал установлен. Угловой --------------- Узел Необходимо сначала установить эту ссылку. Как вы это сделаете? В вашем index.html

Тогда в вашем nodeJS app.js Do НОЙ Сетевой розетки выразить --save

var express = require('express'); 
var app = express(); 
var server = require('http').Server(app); //you don't need to require a model for this. This functionality is already built in NodeJS 
var io = require('socket.io')(server); 

И когда это будет сделано. В том же app.js типа

io.emit("this_should_be_same", { 
    data: { 
      lat: data.lat, 
      lng: data.lng 
      } 
}); 

Теперь в вашем приложении угловой. Сделать все проще. В вашем app.js, где вы даете свои маршруты и прочее. Пожалуйста, дайте эту фабрику.

var ypurApp = angular.module('myApp',[]); 
yourApp.factory('socket', function($rootScope) { 

    var socket = io.connect('localhost:5040'); 

    return { 
     on: function(eventName, callback) { 
      socket.on(eventName, function() { 
       var args = arguments; 
       //console.log(args); 
       $rootScope.$apply(function() { 


        callback.apply(socket, args); 
       }); 
      }); 
     }, 
     emit: function(eventName, data, callback) { 
      socket.emit(eventName, data, function() { 
       var args = arguments; 
       $rootScope.$apply(function() { 
        if (callback) { 
         callback.apply(socket, args); 
        } 
       }); 
      }); 
     } 
    }; 
}); 

Теперь вы можете вводить его в любом контроллере, как

angular.module('myApp').controller('chatController',['socket', function(socket){ 
    socket.on("this_should_be_same", function(data){ 
    console.log(data); 
}); 
}]); 

Это должно сделать это. Я знаю, что вы придумаете сомнения, не стесняйтесь спрашивать меня.

0

Со стороны серверной интеграции ...

module.exports = (function(app){ 
    var server = require('http').Server(app); 
    var io = require('socket.io')(server); 
    io.on('connection', function(socket){ 
     socket.on('chat', function (data) { 
      socket.broadcast.emit('newMessage', data); 
      socket.broadcast.emit('onlineUser',connectedPeople); 

     }) 
}) 
server.listen(3000, function() { 
    console.log('connection created on port no : '+3000); 
})}) 

// для переднего конца побочной интеграции услуг

angular.module('myApp').factory('Socket',function (socketFactory) { 
return socketFactory({ 
ioSocket: io.connect('http://localhost:3000') 
});}); 
Смежные вопросы