我编写了一个简单的nodejs ws websocket 服务器,它在客户端连接时提供二进制 jpeg 文件,如下所示:
import WebSocket = require("ws");
console.log("Websocket is starting...");
// Setup websocket
const wss = new WebSocket.Server({ port: 8080 });
wss.on("connection", function connection(webSocket) {
console.log("Connected");
webSocket.on("message", function incoming(message) {
console.log("received: %s", message);
});
webSocket.on("error", function error(err) {
console.log(err.error);
});
webSocket.send(binaryJpegFile);
});
Run Code Online (Sandbox Code Playgroud)
这段代码有一个错误,因为它默认作为文本发送,所以我替换了:
webSocket.send(binaryJpegFile);
Run Code Online (Sandbox Code Playgroud)
和:
webSocket.send(binaryJpegFile, {binary: true});
Run Code Online (Sandbox Code Playgroud)
现在,我的颤振代码使用以下代码将二进制 jpeg 文件作为 Uint8List 接收:
WebSocket socket;
void handleWebSocket(data) {
// Listen for incoming data. We expect the data to be a JSON-encoded String.
print("WebSocket data received");
if …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Dart 中创建一个“echo”WebSocket,但在网上我只能找到过时的示例。
这是我目前的代码:
服务器:
import 'dart:io';
import 'dart:convert';
void main() async {
final serverSocket = await ServerSocket.bind('127.0.0.1', 5600);
await for (Socket socket in serverSocket) {
socket.transform(utf8.decoder).listen((data) {
print(data);
});
}
}
Run Code Online (Sandbox Code Playgroud)
客户:
import 'dart:html';
WebSocket socket;
bool open = false;
void main() {
querySelector('#sendHello').onClick.listen(onClick);
querySelector('#output').text = 'Your Dart app is running.';
socket = WebSocket('ws://localhost:5600');
socket.onMessage.listen(socketMessage);
socket.onOpen.listen((_) => open = true);
}
void socketMessage(MessageEvent event){
print('I recived: ${event.data}');
}
void onClick(MouseEvent event) {
if (!open)
print('Connection is not open!');
else …Run Code Online (Sandbox Code Playgroud)