Chat vidéo WebRTC avec Ajax au lieu de WebSocket: Possible?

Il y a six mois, j'ai pu réussir le code de mon propre serveur WebSocket script en PHP. Grâce à cela, j'ai été capable de mettre en place un WebRTC service de vidéo chat sur mon hôte local. J'ai été très heureux jusqu'à ce que j'ai réalisé que, pour le déployer, j'avais besoin d'un serveur web qui m'a donné accès aux sockets.

Malheureusement, aucun d'hébergement web partagé permet à pour les prises et tous les serveurs web qui offrent des sockets sont chers. Alors que pas une solution efficace sur une grande échelle, pour l'amour de la création d'une démo pour montrer aux gens, je veux changer la méthode de signalisation de WebSocket à Ajax afin que je puisse montrer WebRTC service de vidéo chat que j'ai fait.

À cette fin, j'ai essayé de coder quelque chose depuis quelques jours, mais n'ont pas eu de succès en obtenant le WebRTC pairs pour capturer des uns et des autres vidéo.

À l'instant, quand un client se connecte sur le script, j'utilise de l'Ajax pour envoyer une demande à un script PHP qui vérifie si il y a d'autres utilisateurs actifs dans la DB. Si non, le script crée ensuite une offre, et des lieux de l'offre de la DB. Après cela, le client interroge un distinct script PHP à chaque seconde pour vérifier une réponse à partir d'un autre client qui se connecte au script.

Après cela, je puis vous connecter à l'script à partir d'un autre client, qui interroge le même script PHP et de la DB, qui se rend alors compte qu'un utilisateur actif (de la première connexion) a déjà publié une offre, le deuxième, le client acquiert et des décors pour la télécommande description. Le deuxième client crée ensuite une réponse, qui est placé dans la DB.

À ce point, le premier client (qui est d'interrogation de la DB à chaque seconde) détecte que la réponse est présente et que des ensembles de réponse à distance description pour le premier client. Malheureusement, même après avoir réussi à faire tout ça, de l'autre client de la vidéo n'est pas à éclater.

Donc voilà où j'en suis confus et trois (multipart) questions:

1), j'ai pensé que, après tant de clients à définir leurs locaux description, puis envoyé locaux de la description à l'autre client et l'autre client qui a reçu la description de la télécommande description de l'onaddstream événement était censé le feu, me permettant ainsi de l'affichage de la vidéo à distance. Cependant, ce n'est pas le cas. Ça marchait bien avant, quand j'ai utilisé WebSocket, mais cela ne fonctionne pas du tout avec Ajax pures. Est-il quelque chose en particulier, je suis absent? A WebRTC spec changé radicalement au cours des six derniers mois? J'ai essayé de regarder le WebRTC specs, mais je ne vois pas de changements majeurs.

2) Après frustré de ne pas arriver à des choses à travailler avec l'Ajax, je suis retourné à mon WebSocket version et l'a chargé sur mon hôte local. Je n'ai pas changé le code à tous, depuis la dernière utilisation (ce qui a bien fonctionné il y a six mois), mais maintenant, quand j'essaie de l'utiliser, parfois ça marche et parfois ça ne marche pas. Parfois, j'ai des erreurs liées à l'impossibilité de définir le local et/ou distant descriptions. Qu'est-ce cela? Il y a eu des changements aux spécifications qui serait l'origine de ce problème? À cet égard, même si je ne peux pas obtenir de la télécommande vidéos de pop-up avec l'Ajax version, j'ai été en écho à beaucoup de choses à la console, et il semble comme avec l'Ajax version ainsi, parfois, le local et à distance des descriptions pour les deux clients sont correctement mis en place, et parfois, les erreurs se produit lorsque vous tentez de définir la locale/à distance des descriptions pour quelque raison que ce soit, même si je suis en cours d'exécution exactement le même script à chaque fois sans aucun changement. J'utilise la dernière version de Chrome, et je commence à me demander si il y a un bug ou quelque chose.

3) Est le onicecandidate gestionnaire d'événements nécessaires pour établir une connexion? Mon hypothèse était que les pairs pourrait établir une connexion avec simplement une offre valide et la réponse, et que le onicecandidate événement a été utiliser pour fournir d'autres routes, etc., ce qui pourrait conduire à une meilleure qualité de connexion (mais ne sont pas obligatoires). Suis-je tort? Si le onicecandidate info est nécessaire, comment me recommandez-vous gérer cela avec Ajax comme la signalisation méthode?

Je sais que beaucoup d'informations et beaucoup de questions, mais toutes les informations/connaissances que n'importe qui peut offrir serait très apprécié. J'ai été frapper ma tête contre mon bureau depuis quelques jours à essayer de comprendre cela, et rien n'est de donner un sens.

source d'informationauteur HartleySan