提问人:user2643642 提问时间:8/2/2013 最后编辑:oberliesuser2643642 更新时间:8/13/2013 访问量:415
如何获取每条数据的 URL?
How can you get a url for every piece of data?
问:
我正在构建一个基于 Firebase 的 IM 平台,我希望每个用户都能获得一个将他们引导至聊天室的地址。
答:
0赞
Tom S
8/9/2013
#1
散 列。
如果我正确理解了您的问题,您希望能够共享一个 URL,该 URL 将允许单击该 URL 的任何人登录同一个聊天室。
我为我曾经制作的 Firebase 应用程序这样做了。您需要做的第一件事是使用该方法。将聊天室推送到 Firebase,然后使用该方法获取推送的网址。一些快速的 JS 字符串操作 - - 其中“x”是您要截取 URL 的任何地方。 将为您设置哈希值。将哈希添加到共享 URL,然后进行下一步:.push()
toString()
window.location.hash = pushRef.toString().slice(x)
window.location.hash
当你打开页面时,你会想要一个哈希侦听器来检查是否已经有一个哈希,所以进入一个doc.ready函数,然后......$(window).bind('hashchange', function() {UpdateHash()})
function UpdateHash() {
global_windowHash = window.hash.replace("#", "");
// to assign the hash to a global hash variable
if (global_windowHash) {
// if there was already a hash
chatRef = new Firebase("[Your Firebase URL here]" + "/chatrooms/" + global_windowHash);
// chatRef is the global that you append the chat data to, and listen from.
} else {
// there wasn't a hash, so you can auto-create a new one here, in which case:
chatRef = new Firebase("[Your Firebase URL here]" + "/chatrooms/");
chatRef = chatRef.push();
window.location.hash = chatRef.toString().slice(x);
}
}
我希望这会有所帮助(并且:P有效)。如果有任何疑问或问题,请询问!
评论
0赞
user2643642
8/10/2013
你能给我发一个HTML的例子吗?
0赞
Tom S
8/10/2013
我稍后会发布一个 - 我现在没有时间,对不起 - 如果你想让我直接发送,你可以给我发电子邮件:)
0赞
user2643642
8/12/2013
这就像使用 FireBase 在客户端之间同步数据一样。
0赞
Tom S
8/13/2013
#2
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="https://cdn.firebase.com/v0/firebase.js"></script>
<script>
var hash; // global incase needed elsewhere
$(function() {
hash = window.location.hash.replace("#", "");;
myRootRef = new Firebase("http://xxxx.firebaseio.com");
var postingRef;
if (hash) {
// user has been given a hashed URL from their friend, so sets firebase root to that place
console.log(hash);
postingRef = new Firebase("http://xxxx.firebaseio.com/chatrooms/" + hash);
} else {
// there is no hash, so the user is looking to share a URL for a new room
console.log("no hash");
postingRef = new Firebase("http://xxxx.firebaseio.com/chatrooms/");
// push for a unique ID for the chatroom
postingRef = postingRef.push();
// exploit this unique ID to provide a unique ID host for you app
window.location.hash = postingRef.toString().slice(34);
}
// listener
// will pull all old messages up once bound
postingRef.on("child_added", function(data) {
console.log(data.val().user + ": " + data.val().message);
});
// later:
postingRef.push({"message": "etc", "user": "Jimmybobjimbobjimbobjim"});
});
</script>
</head>
这在本地对我有用。您需要将 xxxx 更改为您的任何 URL,并在 .slice() 位添加第一部分的任意字符数。
评论
0赞
Tom S
8/27/2013
没问题,如果您有任何问题,请告诉我:)
评论