Ciao a tutti sono nuovo del mondo ruby/rails e sto creando un
applicativo web realtime che mi permetta di generare dei post dinamici
stile social network;
Metodo uno funzionante:
ho startato faye via client/browser: channel.js:
$(function() {
// Create a new client to connect to Faye
var client = new Faye.Client(‘http://localhost:9292/faye’);
var user_id = $('#user_id').val();
var user = getUser(user_id);
var public_subscription = []
public_subscription[0] = client.subscribe('/user/' + user_id +
‘/posts’, function(data) {
printPost(data);
});
if( user.hashtags.length > 0 ){
for (var i = 1; i <= user.hashtags.length; i++) {
var hashtag = user.hashtags[i - 1];
public_subscription[i] =
client.subscribe(‘/posts/hashtag/’ + hashtag._id, function(data) {
printPost(data);
if( data.gr ) addPostGroup(data);
});
if( hashtag.post_ids.length > 0 ){
for (var j = 1; j <= hashtag.post_ids.length; j++) {
var post_id = hashtag.post_ids[j - 1];
public_subscription[i] =
client.subscribe(‘/post/’+post_id, function(data) {
if( data.comment ) addComment(data.post_id,
data._id, data);
if( data.like ) addLike(data._id,
data.liker_ids.length);
});
}
}
}
}
if( user.posts.length > 0 ){
for (var i = 1; i <= user.posts.length; i++) {
var post = user.posts[i - 1];
public_subscription[i] =
client.subscribe(‘/post/’+post._id, function(data) {
if( data.comment ) addComment(data.post_id,
data._id, data);
if( data.like ) addLike(data._id,
data.liker_ids.length);
});
}
}
});
post.js:
$(“#postWallForm”).ajaxForm({
type: ‘post’,
success: function(post){
var hashtags_ids = post.hashtag_ids;
var group = post.group;
for (var i = 0; i < hashtags_ids.length; i++) {
var hashtag_id = hashtags_ids[i];
publish(post, '/posts/hashtag/' + hashtag_id);
}
if( typeof group != 'undefined' ){
for (var i = 0; i < group.hashtag_ids.length; i++) {
var keyword = group.hashtag_ids[i];
post['gr'] = 1;
publish(post, '/posts/hashtag/' + keyword);
}
}
client.publish('/user/' + post.user_id + '/posts' , post);
return false;
});
quando viene eseguito il submit del form, lui mi salva i dati e in più
crea tramite faye il sistmea relatime chemi va a postare sul wall;
la mia domanda è questa ogni volta che l’utente passa da una pagina
all’altra lui mi apre e chiude la connessione a faye?? non cè un modo
per far persistere la connessione??
secondo metodo non funzionante:
ApplicationController:
def self.subscription(user_id)
user = User.find(user_id)
EM.run {
client = Faye::Client.new(‘http://localhost:9292/faye’)
client.subscribe('/user/posts/' + user_id) do |post|
PostsController.print(post)
end
user.hashtags do |hashtag|
client.subscribe('/posts/' + hashtag.id) do |post|
PostsController.print(post)
end
end
}
end
la mia domanda è la chiamata avviene normalmente, ma cè un modo per
interagire col DOM ?? oppure stampare il post a video?? perchè nel
momento che il subscribe viene interogato non so come posso far stampare
il mio post a video.
graziem e scusate se sono stato lungo e imperfetto.