我会尽力使其尽可能简洁。
概述
使用 MediaRecorder,我将流的 blob 发送到我的节点服务器。从我的节点服务器,我将 Uint8Arrays 发送回客户端。然后,我将 blob 设置为从节点服务器检索的 Uint8Array,类型为video/webm;编解码器=vp9。
这是我的概述的代码:
当客户端启动流时:
successCallback(stream) {
if (MediaRecorder.isTypeSupported('video/webm;codecs=vp9')) {
this.options = { mimeType: 'video/webm; codecs=vp9' };
}
this.video.srcObject = stream;
this.video.play();
this.mediaRecorder = new MediaRecorder(stream, this.options);
this.mediaRecorder.ondataavailable = this.handleDataAvailable.bind(this);
this.mediaRecorder.start(3000);
}
handleDataAvailable(blob) {
// POST/PUT "Blob" using FormData/XHR2
this.signalHub.sendStream(blob.data);
}
public sendStream(stream) {
this.socket.emit('send-stream', stream);
}
Run Code Online (Sandbox Code Playgroud)
当服务器在sendStream()方法之后接收到来自客户端的流时:
socket.on('send-stream', (newStreamBuff) => {
stream = Buffer.concat([stream, new Uint8Array(newStreamBuff)]);
socket.emit('stream-stream', new Uint8Array(newStreamBuff));
});
Run Code Online (Sandbox Code Playgroud)
请注意,在发送时,我们将blob作为Uint8Array …
我在 ElasticSearch 中使用模糊搜索选项。它太酷了。
但是我在搜索有空格的值时遇到了一个问题。例如说我有两个值:
"Pizza"
"Pineapple Pizza"
Run Code Online (Sandbox Code Playgroud)
我使用以下查询搜索 Pizza:
client.search({
index: 'food_index',
body: {
query: {
fuzzy: {
name: {
value: "Pizza",
transpositions: true,
}
},
}
}
})
Run Code Online (Sandbox Code Playgroud)
返回的值是:
"Pizza"
"Pineapple Pizza"
Run Code Online (Sandbox Code Playgroud)
这是预期的。但是,如果我在查询中输入值“Pineapple Pizza”:
client.search({
index: 'food_index',
body: {
query: {
fuzzy: {
name: {
value: "Pineapple Pizza",
transpositions: true,
}
},
}
}
})
Run Code Online (Sandbox Code Playgroud)
返回的值是:
""
Run Code Online (Sandbox Code Playgroud)
空的
这是为什么?它应该是完全匹配的。我正在考虑将所有包含空格的名称切换为下划线。所以“Pineapple Pizza”将是“Pineapple_Pizza”(这个解决方案对我有用)。但我问这个问题是希望找到更好的选择。我在这里做错了什么?
我在使用 AWS 通过名为“ElasticSearch Service”的服务托管 ElasticSearch 实例时遇到了问题。
我希望这个问题已经得到解决,但这个月我几乎不得不因为使用该服务而意外运行多个 ES 实例而支付 300 美元。我傻了,没读书。
因此,我们的想法是仅保持一个实例运行,每月最多支付 150 美元。
现在,我不是企业主,但我正在尝试启动自己的网站。是否没有其他服务可以让我以更便宜的价格托管 ES 服务?当我从我正在测试的业务中获得 0 回报时,每月 150 美元已经是很多了。或者 AWS ElasticSearch Service 是唯一的解决方案吗?我想避免在本地计算机上托管该服务。
任何帮助都会很棒,我不知道还能在哪里问这个问题。