修复socket连接出错

pull/1/head
masnn 5 years ago
parent a2600d5cc4
commit f259106aa3

@ -53,42 +53,46 @@ function POST(route, ...handler) {
function SOCKET(prefix, middlewares, handler) { function SOCKET(prefix, middlewares, handler) {
const sock = sockjs.createServer({ prefix }); const sock = sockjs.createServer({ prefix });
sock.on('connection', async conn => { sock.on('connection', async conn => {
conn.cookies = { try {
get(name) { conn.cookies = {
return conn.cookies[name]; get(name) {
}, return conn.cookies[name];
set() { } },
}; set() { }
conn.state = {}; };
conn.params = {}; conn.state = {};
conn.request = { conn.params = {};
headers: conn.headers conn.request = {
}; headers: conn.headers
let p = conn.url.split('?')[1].split('&'); };
for (let i in p) p[i] = p[i].split('='); let p = (conn.url.split('?')[1] || '').split('&');
for (let i in p) conn.params[p[i][0]] = decodeURIComponent(p[i][1]); for (let i in p) p[i] = p[i].split('=');
await new Promise((resolve, reject) => { for (let i in p) conn.params[p[i][0]] = decodeURIComponent(p[i][1]);
conn.once('data', msg => {
for (let i of msg.split(';')) {
i = i.trim().split('=');
conn.cookies[i[0]] = i[1];
}
resolve();
});
setTimeout(reject, 5000);
});
for (let i of m)
await new Promise((resolve, reject) => {
i(conn, resolve).catch(reject);
});
for (let i of middlewares)
await new Promise((resolve, reject) => { await new Promise((resolve, reject) => {
i(conn, resolve).catch(reject); conn.once('data', msg => {
for (let i of msg.split(';')) {
i = i.trim().split('=');
conn.cookies[i[0]] = i[1];
}
resolve();
});
setTimeout(reject, 5000);
}); });
conn.send = data => { for (let i of m)
conn.write(JSON.stringify(data)); await new Promise((resolve, reject) => {
}; i(conn, resolve).catch(reject);
handler(conn); });
for (let i of middlewares)
await new Promise((resolve, reject) => {
i(conn, resolve).catch(reject);
});
conn.send = data => {
conn.write(JSON.stringify(data));
};
handler(conn);
} catch (e) {
console.error(e);
}
}); });
sock.installHandlers(server); sock.installHandlers(server);
} }

Loading…
Cancel
Save