Skip to content

Instantly share code, notes, and snippets.

@ae6rt
Last active July 9, 2021 14:12
Show Gist options
  • Star 16 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save ae6rt/7894539 to your computer and use it in GitHub Desktop.
Save ae6rt/7894539 to your computer and use it in GitHub Desktop.
var uuids = angular.module('uuids', []);
uuids.factory("rfc4122", function () {
return {
newuuid: function () {
// http://www.ietf.org/rfc/rfc4122.txt
var s = [];
var hexDigits = "0123456789abcdef";
for (var i = 0; i < 36; i++) {
s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
}
s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
s[8] = s[13] = s[18] = s[23] = "-";
return s.join("");
}
}
});
Then inject it into some other module:
var services = angular.module('services', ['uuids']);
then use it in that module in this sort of way:
services.factory("websockets", function (rfc4122) {
var listeners = {};
var socket = null;
return {
start: function (url) {
socket = new WebSocket(url);
socket.onopen = function () {
};
socket.onclose = function () {
};
socket.onmessage = function (evt) {
for (var listener in listeners) {
if (listeners.hasOwnProperty(listener)) {
listeners[listener](evt);
}
}
}
},
stop: function () {
socket.close();
},
addListener: function (t) {
var uuid = rfc4122.newuuid();
listeners[uuid] = t;
return uuid;
},
removeListener: function (uuid) {
delete listeners[uuid];
}
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment