【发布时间】:2019-09-15 12:14:50
【问题描述】:
我有非常大的数据要使用节点从 sql 服务器获取,并使用套接字 io 将数据实时广播到客户端。 我可以获取数据,但客户端无法更新 UI。
数据可以在浏览器中进行控制台登录。为什么数据没有附加到 html 正文中。
服务器正在本地运行。 使用最新稳定版本的 node 、 express 和 socket io @ 1.7.4 server.js
var fs = require("fs");
//const fse = require("fs-extra");
var compression = require('compression')
var Connection = require("tedious").Connection;
var Request = require("tedious").Request;
var path = require("path");
var TYPES = require("tedious").TYPES;
var sql = require("mssql");
var cors = require("cors");
var express = require("express"),
app = express(),
server = require("http").createServer(app);
var io = require('socket.io')(server);
server.listen(3001, "0.0.0.0");
app.use(cors());
app.use(compression())
var dbConfig = {
user: "xxx",
password: "xxx",
server: "xxx",
database: "xxx"
};
//Connect to the Database Instance
var cp = new sql.ConnectionPool(dbConfig);
cp.connect(err => {
console.log("Database error message +++++++++ " + err);
});
app.use(express.json());
io.on('connection', function(socket){
socket.on('echo',function (data) {
console.log(data);
})
var request = new sql.Request(cp);
var statement =
"USE xxx; SELECT TOP 100000 * from xxxx";
request.stream = true;
request.query(statement);
request.on('recordset', columns => {
// Emitted once for each recordset in a query
})
request.on('row', row => {
socket.emit("row",row);
})
request.on('error', err => {
})
request.on('done', result => {
})
});
索引.html
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Example</title>
</head>
<body>
<script
src="https://code.jquery.com/jquery-3.4.1.slim.js"
integrity="sha256-BTlTdQO9/fascB1drekrDVkaKd9PkwBymMlHOiG+qLI="
crossorigin="anonymous"></script>
<script src="http://localhost:3001/socket.io/socket.io.js"> </script>
<script>
var socket = io.connect("http://localhost:3001",{
transports: ['websocket','polling']
});
var body = $("body");
socket.on("connect",function () {
})
socket.emit('echo', 'this is a message');
socket.on("row",function (data) {
console.log(data);
body.append(data);
})
</script>
</body>
</html>
【问题讨论】:
标签: javascript node.js sql-server express socket.io