使用Javascript握手SQL服务器

时间:2011-09-06 17:48:26

标签: javascript sql sql-server websocket

我想尝试,作为一个学习例外,让我的javascript与sql聊天。

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

似乎不是一个被阻塞的端口,所以理论上应该可以工作。

我正在寻找如何与sql server握手,并与之聊天的细分。

非常赞赏正确方向的指针 (甚至解释为什么它不起作用的原因。)

我想在Microsoft SQL 2008 R2上尝试此操作。

7 个答案:

答案 0 :(得分:7)

MS SQL没有基于文本的协议,允许您通过telnet与其进行交互。您可以使用Web套接字来确定目标服务器正在侦听1433,但您最好完成登录序列是使用sql客户端API。

答案 1 :(得分:3)

SQL Server连接使用TDS协议,Tabular Data Stream Protocol Specification中对此进行了记录。如果您遵循协议规范,请参阅protocol examples并查看FreeTDS开源实现,您应该能够使用基本套接字进行低级别握手等。然而,除了学术练习之外,确实没有任何意义。但是棺材里的钉子是WebSockets,它不是基本的插座。

可行的方法是使用Web服务接口(最好是REST,可能是OData)将SQL Server数据库公开到Web,然后从Javascript HTML5应用程序中使用此Web服务。这是一个很好的阅读:Creating an OData API for StackOverflow including XML and JSON in 30 minutes

答案 2 :(得分:1)

在HTML5中,JavaScript可以使用SQLite直接与SQL通信。虽然我不确定你对“聊天”的定义是什么,所以我的答案就是一点点 http://html5doctor.com/introducing-web-sql-databases/

答案 3 :(得分:1)

尽管名称为WebSockets中的“Socket”,尽管WS运行在TCP之上(使用基于HTTP的初始握手),但WS不是TCP。 我不知道MS SQL Server所说的前端协议,但它很可能与WS框架兼容。例如。

你可以做的可能是以下几点:

浏览器< = WS => WS代理< = plain TCP => SQL Server

对于代理,您可能需要查看

https://github.com/kanaka/websockify

这个宝贝允许您通过WS与代理进行通信,代理将解包WS有效负载并将其转换为普通的TCP流。

这样就可以与SQL Server对话..它可能是一项重要的工作,我不知道SQL Server协议文档有多好/开放。

对于PostgreSQL,前端协议是完全开放的并且有很好的文档记录。

如果我不清楚上面的含义,我可以进入更多细节..或者ping kanaka询问他的想法... kanaka =代理的作者并且在WS上非常活跃。

答案 4 :(得分:0)

典型的SQL服务器没有直接的HTTP接口,即不允许浏览器直接连接 但是,使用PHP或任何服务器端语言制作这样的不安全的接口并不难:

<?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);

试试MangoDB,它有一个HTTP接口: Simple REST Api

您可以通过添加服务器/用户/数据库/密码参数使其更具动态性,但如果页面是公共的,则会更加不安全。

答案 5 :(得分:0)

如果您要使用microsoft提供的ADO对象,您应该能够与sql数据库进行通信。 http://msdn.microsoft.com/en-us/library/ms681519(v=vs.85).aspx

我知道你可以与sql数据库“聊天”。 hick,我不确定你能在普通的网络浏览器中做到这一点。在工作中,我们使用hta和内部MySQL服务器来完成它。

答案 6 :(得分:-1)

哇!不要觉得好伙计,你的i / o完全错了。 JavaScript是一种具有非阻塞i / o的强大功能的语言。这段代码杀死了它的整个精神。

任何数据库代码在js中应该看起来像这样。

getRemoteData('remoteURL', callback(data){

    // Use your data here
});

语言中有很好的部分..学会使用它。

如果你想进行实时聊天,一起使用couchDB和JavaScript会是一个很好的选择。 Node.js也是brillinat。 SQL不是实时应用程序的东西