我想尝试,作为一个学习例外,让我的javascript与sql聊天。
var ws = new WebSocket("ws://127.0.0.1:1433");
似乎不是一个被阻塞的端口,所以理论上应该可以工作。
我正在寻找如何与sql server握手,并与之聊天的细分。
非常赞赏正确方向的指针 (甚至解释为什么它不起作用的原因。)
我想在Microsoft SQL 2008 R2上尝试此操作。
答案 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)
任何数据库代码在js中应该看起来像这样。
getRemoteData('remoteURL', callback(data){
// Use your data here
});
语言中有很好的部分..学会使用它。
如果你想进行实时聊天,一起使用couchDB和JavaScript会是一个很好的选择。 Node.js也是brillinat。 SQL不是实时应用程序的东西