如何使用angular-socket-io库设置socket.io服务器?

Duplicate中的答案并不是指在我的代码中使用的angularjs库,因为angular度设置angular-socket-io的方式与重复提供的答案不相似!

刚开始工作socket.io第一次,我已经find了angular-socket-io库在客户端工作,但它看起来有点复杂,我只是想发送消息从服务器到客户端使用angular度套接字库,但它没有发生任何想法下面的代码中执行错误是什么?

的index.html

 <script src="bower_components/socket.io-client/socket.io.js"></script> <script src="bower_components/angular-socket-io/socket.js"></script> 

server.js

  var express = require('express'); var app = express(); var server = require('http').createServer(app); var io = require('socket.io')(server); io.on('connection', function(client) { console.log('Client connected...'); io.emit('message', message); }); server.listen(3000); 

angularSOcketFactory.js

 angular.module('loggingApp').factory('mySocket', function (socketFactory) { 'use strict'; return socketFactory(); }); 

angularCtrl.js

  $scope.$on('socket:someEvent', function (ev, data) { $scope.theData = data; }); 

有一个关于如何创build自己的socket.io供应商angular的优秀教程 。

我已经在我的AngularJS应用程序中成功地使用了它,我也有一个完整版本的源代码。 这是设置为Browserify,但你可以通过摆脱这两个require('');撤销require(''); 在文件顶部的声明。

以下是Socket.io提供程序的源代码,您只需将其链接到控制器即可。 所有的信用都属于Maciej Sopylo用这种方法把教程放在那里。

 (function () { 'use strict'; var angular = require('angular'); var io = require('socket.io-client'); angular .module('socket.io', []) .provider('$socket', $socketProvider); /* @ngInject */ function $socketProvider() { var ioUrl = ''; var ioConfig = {}; // Private Function to assign properties to ioConfig function setOption(name, value, type) { if (typeof value !== type) throw new TypeError('\'' + name + '\' must be of type \'' + type + '\''); else ioConfig[name] = value; } this.$get = function $socketFactory($rootScope) { var socket = io(ioUrl, ioConfig); return { on: function on(event, callback) { socket.on(event, function() { var resData = arguments; $rootScope.$apply(function() { callback.apply(socket, resData); }); }); }, off: function off(event, callback) { if (typeof callback === 'function') socket.removeListener(event, callback); else socket.removeAllListeners(event); }, emit: function emit(event, data, callback) { if (typeof callback === 'function') { socket.emit(event, data, function() { callback.apply(socket, arguments); }); } else socket.emit(event, data); } }; }; this.setConnectionUrl = function setConnectionUrl(url) { if (typeof url === 'string') ioUrl = url; else throw new TypeError('url must be of type string'); }; this.setPath = function setPath(value) { setOption('path', value, 'string'); }; this.setConnectTimeout = function setConnectTimeout(value) { setOption('connect timeout', value, 'number'); }; this.setTryMultipleTransports = function setTryMultipleTransports(value) { setOption('try multiple transports', value, 'boolean'); }; this.setReconnect = function setReconnect(value) { setOption('reconnect', value, 'boolean'); }; this.setReconnectionDelay = function setReconnectionDelay(value) { setOptions('reconnection delay', value, 'number'); }; this.setReconnectionLimit = function setReconnectionLimit(value) { setOptions('max reconnection attempts', value, 'number'); }; this.setSyncDisconnectOnUnload = function setSyncDisconnectOnUnload(value) { setOptions('sync disconnect on unload', value, 'boolean'); }; this.setAutoConnect = function setAutoConnect(value) { setOptions('auto connect', value, 'boolean'); }; this.setFlashPolicyPort = function setFlashPolicyPort(value) { setOptions('flash policy port', value, 'number'); }; this.setForceNewConnection = function setForceNewConnection(value) { setOptions('force new connection', value, 'boolean'); }; } })();