[mod] improve sock err handling
This commit is contained in:
parent
9c805c2a21
commit
b7d0d8e03d
11 changed files with 108 additions and 71 deletions
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
<form class="d-flex">
|
||||
<span id="state">🔴</span>
|
||||
<input id="iServer" type="text" value="ws://localhost:3000/ws/lsp" style="width:25em" />
|
||||
<input id="iServer" type="text" value="ws://localhost:3000/ws/lsp2" style="width:25em" />
|
||||
<button id="connect">connect</button>
|
||||
</form>
|
||||
<div class="row">
|
||||
|
|
@ -45,6 +45,7 @@
|
|||
<div class="container-fluid">
|
||||
<div class="row " style="overflow:hidden">
|
||||
<div class="col-2">
|
||||
<div id="msg"> </div>
|
||||
<select id="load">
|
||||
<option selected value="">load..</option>
|
||||
<optgroup label="XQuery3">
|
||||
|
|
@ -61,7 +62,7 @@
|
|||
</optgroup>
|
||||
</select>
|
||||
<label for="symbols">Symbols:</label><select id="symbols" disabled="disabled"></select>
|
||||
<ul id="msg" style="overflow: scroll;">
|
||||
<ul id="traffic" style="overflow: scroll;">
|
||||
<li>-</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -31375,18 +31375,18 @@ ${text}</tr>
|
|||
// no error checking
|
||||
function simpleWebSocketTransport(uri) {
|
||||
let handlers = [];
|
||||
let sock = new WebSocket(uri);
|
||||
sock.addEventListener("close", (event) => { alert("sock gone!");});
|
||||
sock.addEventListener("error", (event) => { alert("sock error!");});
|
||||
sock.onmessage = e => { for (let h of handlers) h(e.data.toString()); };
|
||||
return new Promise(resolve => {
|
||||
return new Promise(function (resolve, reject) {
|
||||
let sock = new WebSocket(uri);
|
||||
sock.onmessage = e => { for (let h of handlers) h(e.data.toString()); };
|
||||
sock.onerror = e => reject(e);
|
||||
sock.onopen = () => resolve({
|
||||
socket: sock,
|
||||
send: (message) => sock.send(message),
|
||||
subscribe: (handler) => handlers.push(handler),
|
||||
unsubscribe: (handler) => handlers = handlers.filter(h => h != handler)
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
);
|
||||
}
|
||||
const baseExts = [
|
||||
lineNumbers(),
|
||||
|
|
@ -31421,8 +31421,8 @@ ${text}</tr>
|
|||
syntaxHighlighting(defaultHighlightStyle, { fallback: true })
|
||||
];
|
||||
|
||||
function createEditorState(initialContents, extensions,options = {}) {
|
||||
|
||||
function createEditorState(initialContents, extensions, options = {}) {
|
||||
|
||||
if (options.oneDark)
|
||||
extensions.push(oneDark);
|
||||
|
||||
|
|
@ -31437,7 +31437,7 @@ ${text}</tr>
|
|||
}
|
||||
class xqLinter {
|
||||
constructor(parameters) {
|
||||
this.fred=parameters;
|
||||
this.fred = parameters;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,9 @@
|
|||
const view = lsp.createEditorView(undefined, document.getElementById("editor"));
|
||||
let doc = `3+1`;
|
||||
var client;
|
||||
var extLint;
|
||||
|
||||
function $(id){return document.getElementById(id)};
|
||||
// Load saved content from localStorage when the page loads
|
||||
window.addEventListener('load', () => {
|
||||
const savedText = localStorage.getItem('code');
|
||||
|
|
@ -8,14 +13,6 @@ window.addEventListener('load', () => {
|
|||
view.setState(lsp.createEditorState(doc, lsp.baseExts));
|
||||
connect();
|
||||
});
|
||||
|
||||
|
||||
const view = lsp.createEditorView(undefined, document.getElementById("editor"));
|
||||
let doc = `3+1`;
|
||||
var client;
|
||||
var extLint;
|
||||
|
||||
|
||||
// Save content to localStorage when the page is about to unload
|
||||
window.addEventListener('beforeunload', () => {
|
||||
const doc = view.state.doc.toString();
|
||||
|
|
@ -68,9 +65,13 @@ function connect() {
|
|||
lsp.simpleWebSocketTransport(server)
|
||||
.then(transport => {
|
||||
transport.subscribe(incoming);
|
||||
transport.socket.onclose=(event) => $("msg").innerText="sock gone!";
|
||||
transport.socket.oneror=(event) => $("msg").innerText="sock error!";
|
||||
client = new lsp.LSPClient().connect(transport);
|
||||
let extLsp=lsp.languageServerSupport(client,file,"xquery");
|
||||
extLint=lsp.linter(null,{autoPanel:true});
|
||||
extLint=lsp.linter(
|
||||
view=>{ client.sync();return [];},
|
||||
{autoPanel:true});
|
||||
const doc = view.state.doc.toString();
|
||||
const state = lsp.createEditorState(doc, [...lsp.baseExts, extLsp,extLint]);
|
||||
view.setState(state);
|
||||
|
|
@ -96,10 +97,8 @@ function log(rpc){
|
|||
if(rpc.id) return
|
||||
const text=rpc.method;
|
||||
const li = document.createElement("li");
|
||||
|
||||
li.appendChild(document.createTextNode(text));
|
||||
const ol=document.getElementById("msg");
|
||||
ol.insertBefore(li,ol.firstChild)
|
||||
$("traffic").insertBefore(li,$("traffic").firstChild)
|
||||
};
|
||||
|
||||
function diags(params){
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue