Kommunauty
Connexion
Inscription

AJAX qui fait des siennes


Ideophage Messages : 115

Salut,

N'ayant pas beaucoup exploré le forum (hum... même pas scrollé sur la page d'accueil du forum), je n'avais pas vu cette section, et à la place de poster dedans, j'ai bêtement rempli le formulaire de contact pour suggérer quelques améliorations. Voici le message que j'avais rédigé :

Je ne sais pas exactement quelle technique vous utilisez pour faire des pages dynamiques, ce doit être AJAX, non ? Je voudrais signaler un problème (avec Iceweasel et Chrome, du moins) : quand on essaye d'ouvrir un topic du forum dans un nouvel onglet avec contrôle+clic, ça l'ouvre en plus dans l'onglet courant. C'est un peu gênant. Une condition à ajouter dans le JS, peut-être. Après, quand on désactive JS (quelle idée !), l’ouverture de la page devient un peu aléatoire (j’ai trouvé une règle, vous pouvez tester)... Après, les gens qui n’ont pas le JS activé, c’est plutôt rare.

Pour la messagerie, peut-être que ce serait bien d'autoriser les retours à la ligne... J’ai remarqué que ça fait plein de requêtes inutiles (AJAX - pour les nouveaux messages), je crois qu'il existe maintenant des techniques pour éviter ceci. En effectuant une recherche "AJAX inversé", on tombe sur des résultats intéressants. Sinon, bravo d’utiliser cette technologie (AJAX), j’approuve (je déteste la duplication d’information). Je trouverais bien aussi de donner la possibilité de mettre en forme les MP comme sur le forum, mais c'est sûrement voulu, c'est simplement mon avis.

Juste comme ça, je suggère aussi de faire apparaître les boutons de commande pour les posts (éditer, signaler), même quand on ne survole pas la barre. Je n'avais pas vu au début, et ça m'a perturbé.

edit : maintenant que j'ai créé un sujet, je peux le dire : je ne vois pas le bouton "résolu", c'est normal ?

jeudi 16 aout 2012 (Dernière édition jeudi 16 aout 2012)

SiMax Messages : 7572

Salut !

Pas de souci pour le mail, c'est déjà très gentil de prendre le temps de faire des suggestions. C'est vrai qu'on préfère le forum, comme ça ceux qui veulent peuvent donner leur avis aussi.

Pour ton problème de JS/forum c'est pas ajax mais juste le javascript, je vais essayer de trouver une façon d'arranger ça. En attendant, si tu fais un clic avec la molette de la souris sur le texte du titre (et pas n'importe où dans la case), ça devrait fonctionner.

Concernant les MP, tu voudrais que ça fusionne automatiquement les derniers messages d'une même personne ou simplement pouvoir faire des retours à la ligne dans un même message avant de l'envoyer ?

Oui, on n'a pas de bouton "résolu". Tu penses qu'on devrait ?

dimanche 19 aout 2012

Ideophage Messages : 115

C'est vrai qu'on préfère le forum, comme ça ceux qui veulent peuvent donner leur avis aussi.

Oui, tout à fait d'accord.

J'ai juste jeté un coup d'oeil au code. Effectivement, je me suis trompé, pas d'AJAX sur l'accueil du forum.

<div onclick="window.location.href = '/forum/materiel/';"

Je n'aime pas trop onclick pour les liens (et même quand c'est pas pour les liens), la sémantique est toute cassée...

Je ne peux pas faire de clic du milieux, je suis avec mon pc portable (bon, ok, je peux faire clic à deux doigts, mais c'est pas génial).

Concernant les MP, tu voudrais que ça fusionne automatiquement les derniers messages d'une même personne ou simplement pouvoir faire des retours à la ligne dans un même message avant de l'envoyer ?

En fait, j'aurais trouvé ça mieux que l'on puisse rédiger comme dans le forum.

N'étant pas connaisseur de jQuery, je comprend juste que chat() est appelé régulièrement pour voir s'il n'y a pas de nouveaux messages. Comme dit dans le mail, je crois qu'il est possible de ne pas effectuer toutes ces requêtes inutiles avec le "reverse AJAX". J'ai pas regardé en détail, c'est peut-être une mauvaise piste.

Oui, on n'a pas de bouton "résolu". Tu penses qu'on devrait ?

Pas forcément, mais il faudrait alors pouvoir ajouter quelque chose au titre (du genre, si on est l'OP, avoir un bouton "notifier le titre" => on ajoute au début du titre un texte entre crochets, accolades ou autres).

PS : Une petite idée d'amélioration : lors du clic sur [ quote ], mettre entre les balises le texte sélectionné. Aussi, pour accélérer l'aperçu (j'ai une connexion lente, peut-être que ça ne fait rien chez les autres), ne pas envoyer le formulaire, le parser direct en JS (c'est sans doute plus compliqué, vu que ça fait du code JS+PHP identique). Après, peut-être envoyer le code non parsé au navigo, qui se chargera de le parser en JS (je ne ferais pas comme ça, moi, c'est juste une idée).

edit : sinon, j'ai vu pour les boutons éditer et signaler qui sont visibles, merci.

dimanche 19 aout 2012 (Dernière édition dimanche 19 aout 2012)

Lucas Messages : 830

Salut !

Pour le problème des liens sur la page d'accueil du forum, on en a déjà parlé à maintes reprises, et je crois que si SiMax a eut recours au JS c'est simplement parce que jusqu'à pas si longtemps placer des éléments HTML de type block dans des inline était tout sauf valide, et ne marchait pas sur certains navigateurs, (et puis fallait changer plein de propriétés css dans le code, chiant ), mais je crois que depuis le HTML5 c'est valide, donc ça peut être changé, si telle était la raison .

Sinon pour les MP, les requêtes AJAX répétitives restent à ce jour la méthode la plus compatible, ça demande évidemment beaucoup de requêtes au serveur inutiles, mais les Websockets ne sont pas encore au point, et les requêtes Ajax long-polling (La connexion avec le serveur n'est pas interrompue et on continue à recevoir des infos) peuvent s'avérer très handicapantes si beaucoup de visiteurs sont connectés. Cela dit sur K, ça pourrait être pratique, mais on aspire à beaucoup plus de membres .

dimanche 19 aout 2012 (Dernière édition dimanche 19 aout 2012)

Ideophage Messages : 115

Ahem... Oui, je viens de me pencher d'un peu plus près (je dis bien un peu) sur le « Reverse AJAX »... Moi, j'avais juste retenu ça (wikipédia, même si c'est pas ma source originale) :

Comet est une nouvelle approche permettant à un serveur web d'envoyer des informations au navigateur web sans que celui-ci ne l'ait explicitement demandé.

Ça laissait rêver...

Les Websockets avaient l'air bien, mais effectivement, je crois que les failles de sécurité n'ont toujours pas été réparées (du moins, je n'ai rien vu qui dit ça). Dommage... En tout cas, ça ne fonctionne pas sur mon navigateur, donc poubelle pour le moment. J'aimerais bien savoir où ça en est...

J'ai pas regardé en détail, c'est peut-être une mauvaise piste. (en parlant du reverse AJAX)

Heu... oui, effectivement. Sorry.

-

on en a déjà parlé à maintes reprises

Oups... désolé. C'est vrai que j'ai pas cherché sur le forum.

depuis le HTML5 c'est valide, donc ça peut être changé, si telle était la raison

Pas à la base, non, je ne connais pas trop les normes antérieures.

placer des éléments HTML de type block dans des inline était tout sauf valide

Ahem... oui, c'était pas génial. J'ai testé, même en modifiant le css pour mettre les liens en block, w3c me dit que le html n'était pas "valide".

Je ne saurais que vous encourager à changer de doctype, mais je ne sais pas ce que ça implique.

et ne marchait pas sur certains navigateurs

Ah... rien de plus énervant...

lundi 20 aout 2012 (Dernière édition lundi 20 aout 2012)

SiMax Messages : 7572

Si, le long polling d'AJAX serait plus efficace et tout aussi compatible. C'est juste que ça prend un peu de temps à installer et que j'ai pas mal d'autres choses à faire mais ça devrait être installé d'ici quelques temps

lundi 20 aout 2012

Ideophage Messages : 115

Ah... j'aurais dit le même chose que Lucas, mais je pense que les websockets (ou une autre solution correcte) seront au point lorsque K devra supporter 50 membres en même temps (je n'ai jamais vu plus de quelques membres connectés en même temps). Après, avec AJAX long-polling, peut-être que le temps d'attente entre deux checks peut être dynamique, en fonction du nombre de personnes sur une page. J'ai tenté un test en local, mais boaf... ça n'a servi à rien puisque je ne peux pas ouvrir plus de 6 pages identiques de mon serveur local par navigateur (les autres ne se chargent pas, timeout). Si quelqu'un sait d'où peut provenir le problème...

Et puis, il faut un serveur dédié pour les websockets, pour le moment. C'est le cas pour Kommunauty ?

Finalement, je pense que si je devais faire un truc en AJAX, ce serait plutôt comme ça (long-polling), en attendant une solution potable (bon, ça, c'est plus une question pour moi que sur le site) :

Soit n le nombre de connectés. Le client demande au serveur s'il y a un nouvel événement. Une réponse est retournée directement si oui. Si non, alors on boucle jusqu'à ce que n soit trop élevé ou qu'il y ait un message. On calcule le temps à attendre entre deux tours de boucles toujours en fonction de n. Dans la réponse, on retourne également n, pour que le client détermine quand il doit effectuer une nouvelle requête. [edit : phrase mal placée]

Peut-être que tout ça ne sert à rien, qu'en pensez-vous ?

lundi 20 aout 2012 (Dernière édition lundi 20 aout 2012)

Lucas Messages : 830

Quand j'avais fait des recherches sur le sujet, c'était dans l'optique dans jeu multijoueur, qui implique donc bien plus d'échanges d'informations entre le serveur et les joueurs. Les Websockets sont très performants, mais necessitent un serveur dédié, et Ajax Push mobilise rapidement tous les treads disponibles. La méthode de la requête récursive reste donc (à ce jour) la méthode la plus compatible, et plus sûre pour un système de messagerie comme celui de K. On pourrait également essayer Ajax Push, mais je crois que nous ne sommes pas encore sur un serveur dédié et les prix sont assez élevé pour en obtenir un (je crois ), donc à voir.

Surtout qu'il n'y a pas de quoi se plaindre à propos du système actuel, non ? C'est celui utilisé par beaucoup, et ce n'est pas par hasard.

Pas à la base, non, je ne connais pas trop les normes antérieures.

J'ai regardé la doc w3c, et depuis l'arrivée du HTML5, les balises de type block sont admises dans une balise <a> et uniquement celle-ci, ce qui, au fond, est une bonne chose.

lundi 20 aout 2012

Répondre Pour répondre, tu dois d'abord t'inscrire rapidement sur Kommunauty. Rejoins-nous vite !