ginqi7 / deno-bridge-jieba

deno-bridge-jieba
23 stars 2 forks source link

Cannot send message to a closed websocket? #8

Closed QuarterHeaven closed 2 months ago

QuarterHeaven commented 1 year ago
image

已经安装了 deno, deno-bridge, websocket, M-x deno-bridge-jieba-start 显示 Address already in use. 怎么才能正常使用呢?

ginqi7 commented 1 year ago

加载完 deno-bridge-jieba 默认就是启动状态,不用再手动运行 deno-bridge-jieba-start,直接尝试其他命令即可。你可以list-process 查看进程状态。

QuarterHeaven commented 1 year ago
image

list-process 里面有这两个。

我等了一会发现似乎连接上了,但是现在在中文文本中会报 ⛔ Error (websocket): in callback `on-message': Symbol's function definition is void: json-parse-string 错误。这个怎么解决?

ginqi7 commented 1 year ago

json-parse-string 是 emacs 27.1 以后自带的方法。你的 emacs version 版本比较低吗?

QuarterHeaven commented 1 year ago

是 emacs 29. "GNU Emacs 29.0.50 (build 1, x86_64-apple-darwin22.1.0, NS appkit-2299.00 Version 13.0 (Build 22A380)) of 2022-11-22"

ginqi7 commented 1 year ago

那就不理解了,应该是有的才对。describe-function 无法找到 json-parse-string 吗?

QuarterHeaven commented 1 year ago

找不到。

image

只有这些与 json 相关的 function.

ginqi7 commented 1 year ago

https://www.gnu.org/software/emacs/manual/html_node/elisp/Parsing-JSON.html#index-json_002dparse_002dstring

很遗憾,我也没有头绪为什么 json-parse-string 消失了。

manateelazycat commented 1 year ago

@ginqi7 我这边发现, 当笔记本切换到一个陌生环境没网的时候, 会因为下面错误导致这个issue:

error: Uncaught (in promise) TypeError: error sending request for url (https://cdn.jsdelivr.net/gh/wangbinyq/deno-jieba@wasm/lib/deno_jieba_bg.wasm): error trying to connect: dns error: failed to lookup address information: Temporary failure in name resolution const wasmResponse = await fetch(wasm_url); ^ at async mainFetch (ext:deno_fetch/26_fetch.js:266:12) at async fetch (ext:deno_fetch/26_fetch.js:490:7) at async instantiateModule (https://cdn.jsdelivr.net/gh/wangbinyq/deno-jieba@wasm/lib/deno_jieba.generated.js:462:28) at async https://cdn.jsdelivr.net/gh/wangbinyq/deno-jieba@wasm/lib/deno_jieba.generated.js:401:27 at async Module.instantiate (https://cdn.jsdelivr.net/gh/wangbinyq/deno-jieba@wasm/lib/deno_jieba.generated.js:379:11) at async https://cdn.jsdelivr.net/gh/wangbinyq/deno-jieba@wasm/mod.ts:3:1

ginqi7 commented 1 year ago

@manateelazycat 看起来是网络的原因,dns 没有解析到 jsdelivr。感觉这里可以不使用 cdn,直接把对应的 wasm 文件下载下来,放在code里,直接引用。

manateelazycat commented 1 year ago

@manateelazycat 看起来是网络的原因,dns 没有解析到 jsdelivr。感觉这里可以不使用 cdn,直接把对应的 wasm 文件下载下来,放在code里,直接引用。

对,原来遇到过很多次,都不知道原因。

manateelazycat commented 1 year ago

@ginqi7 大佬, 能否改进一下呢? 这样有时候没网的时候, 不至于没法用。

ginqi7 commented 1 year ago

@manateelazycat 调研了一下,deno 缓存 package 文件只会缓存对应的 ts 文件,对于 wasm 文件每次都会重新拉取。因此断网使用会有问题。

我新拉了一个分支 submodule,然后把 deno-jieba wasm 作为一个 submodule,直接把源码拉下来,不使用 jsdelivr 远端的代码。这样就可以离线使用了。

你可以切换到 submodule 分支,然后把依赖的 deno-jieba submodule 也拉下来,试试看。

manateelazycat commented 1 year ago

@ginqi7 我今天早上试了 submodule 分支, 确实断网情况下不会报 wasm 的错误了。

manateelazycat commented 1 year ago

@ginqi7 建议合并submodule到主分支。

ginqi7 commented 1 year ago

@manateelazycat 已合并。