Ошибка WebAssembly "Протокол недоступен" - PullRequest
0 голосов
/ 27 марта 2019

У меня есть драйвер базы данных, написанный на Go (с использованием go-mssqldb ), который прекрасно работает в одиночку, и я скомпилировал его в WebAssembly.Когда я запускаю файл wasm, он успешно подключается и сразу же запрашивает что-то базовое, например "SELECT @@version", этот клиент возвращает ошибку Protocol not available.Можно ли делать сетевые запросы от WebAssembly?Есть ли особые соображения при этом?Означает ли эта ошибка, что невозможно использовать драйвер таким образом?Что обеспечивает эту ошибку (откуда она берется ... ОС или браузер?) И где они документированы (особенно, как я могу лучше понять ошибку в этом конкретном случае и в более общем случае при использовании WebAssembly)?Спасибо.

1 Ответ

1 голос
/ 27 марта 2019

Нет, ты не можешь.

Для лучшего понимания WASM вы должны принять одну вещь: WebAssembly в веб-браузере - JavaScript . Конечно, вы запускаете программу Go, однако WASM работает в движке JS веб-браузера. Это означает, что в WASM вы не можете делать то, что не может JS. Ваши библиотеки Go реализованы только с использованием JS API. Вы никогда не сможете напрямую касаться низкоуровневых API-интерфейсов ОС.

Это означает, что вы не можете подключиться к серверу SQL напрямую, потому что JS не может использовать низкоуровневую сеть сокетов, кроме WebSockets. На стороне сервера ваш SQL-сервер должен принимать WebSocket, чтобы он работал. Один из способов добиться этого - использовать Websockify . Что касается клиентов, у меня нулевой опыт программирования на Go, но вы должны иметь возможность получить документацию, касающуюся сокетной коммуникации и WebSockets, в WemAssembly.

...