Mise en commun d'un serveur SQL avec Javascript

Je veux essayer, en tant qu'experience d'apprentissage, obtenir mon javascript pour discuter avec sql.

var ws = new WebSocket("ws://127.0.0.1:1433"); 

Ne semble pas être un port bloqué, alors il devrait en théorie fonctionner.

Je suis à la recherche d'une panne de la façon de serrer les mains avec le serveur sql et de discuter avec lui.

Un pointeur dans la bonne direction serait très apprécié
(Ou même une raison expliquant pourquoi il ne fonctionnera pas).

Je veux essayer cela sur Microsoft SQL 2008 R2.

MS SQL n'a pas de protocole basé sur le texte pour vous permettre d'interagir avec telnet. Vous pouvez utiliser un socket Web pour déterminer si le serveur cible écoute 1433, mais vous êtes le meilleur pari pour compléter la séquence de connexion est d'utiliser un client sql api.

Les connexions SQL Server utilisent le protocole TDS, qui est documenté dans la spécification des protocoles de flux de données tabulaires . Si vous suivez la spécification du protocole, consultez les exemples de protocole et jettez un coup d'oeil à l' implémentation Open Source FreeTDS, vous devriez pouvoir faire une poignée de main de bas niveau et plus, en utilisant des sockets de base. Cependant, il n'y a vraiment rien à faire en plus d'un exercice académique. Mais le clou dans le cercueil est le WebSockets, qui ne sont pas des prises de base.

Le chemin à parcourir est d'exposer la base de données SQL Server au Web à l'aide d'une interface de service Web préférable REST, peut-être OData), puis de consommer ce service Web à partir de votre application Javascript HTML5. Voici une bonne lecture: Création d'une API ODATA pour StackOverflow, y compris XML et JSON en 30 minutes .

En HTML5, JavaScript peut communiquer directement avec SQL avec SQLite. Bien que je ne sois pas sûr de votre définition de "chatting", alors prenez ma réponse avec un grain de sel.
http://html5doctor.com/introducing-web-sql-databases/

Malgré le "Socket" dans le nom de WebSockets, et malgré le fait que WS s'exécute sur TCP (avec une poignée de main initiale basée sur HTTP), WS n'est pas TCP. Je ne connais pas le protocole de frontend que MS SQL Server parle, mais il est très peu probable qu'il soit compatible avec l'encadrement WS par exemple.

Ce que vous pourriez faire, c'est probablement ce qui suit:

Navigateur <= WS => WS Proxy <= TCP simple => SQL Server

Pour la procuration, vous voudrez peut-être regarder

https://github.com/kanaka/websockify

Ce bébé vous permet de communiquer via WS au proxy et le proxy déroule la charge utile de WS et le transforme en un flux TCP simple.

De cette façon, il devrait être possible de parler avec SQL Server. Il pourrait s'agir d'une quantité importante de travail et je ne sais pas à quel point la documentation du protocole SQL Server est bonne.

Pour PostgreSQL, le protocole de frontend est entièrement ouvert et bien documenté.

Ne serait-il pas clair ce que je veux dire avec ci-dessus, je peux entrer dans plus de détails … ou ping kanaka pour demander ce qu'il pense … kanaka = auteur de la proxy et très actif sur WS de toute façon.

Les serveurs SQL typiques n'ont pas d'interface HTTP directe, c'est-à-dire ne permettent pas au navigateur de se connecter directement.
Cependant, il n'est pas difficile de créer une telle interface non sécurisée , en utilisant PHP ou n'importe quelle langue côté serveur:

 <?php $query = mysql_query($_REQUEST['q']); $dbResult = exeute($query); // execute is an imaginary function, you can use any function/library you want echo json_encode($dbResults); 

Essayez MangoDB, il possède une interface HTTP: Simple REST Api

Vous pouvez le rendre plus dynamique en ajoutant des paramètres de serveur / utilisateur / base de données / mot de passe, mais ce sera plus instable si la page était publique.

Si vous utilisiez l'objet ADO fourni par Microsoft, vous devriez pouvoir communiquer avec une base de données sql. http://msdn.microsoft.com/en-us/library/ms681519(v=vs.85).aspx

Je sais que vous pourriez "discuter" avec une base de données sql. Le hick, je ne suis pas sûr de pouvoir le faire dans un navigateur Web normal. Au travail, nous l'avons fait en utilisant hta et un serveur MySQL interne.

Hou la la ! Ne vous sentez pas mal, vous avez un problème totalement erroné. JavaScript est une langue qui a des fonctionnalités incroyables pour faire des i / o non bloquants. Ce code tue l'esprit entier de celui-ci.

Tout code de base de données devrait ressembler à ceci à la fin en js.

 getRemoteData('remoteURL', callback(data){ // Use your data here }); 

Il y a de bonnes parties dans la langue … apprendre à l'utiliser.

Si vous voulez faire un chat en temps réel, couchDB et JavaScript ensemble seraient une option de bonus. Node.js est également brillinat. SQL n'est pas une chose pour les applications en temps réel