节点和HTTP2允许服务器向客户端提供多个响应。但是,如果客户端想要发送一个初始请求,而在服务器响应后,客户端想要发送进一步的消息呢?一个解决方案是创建一个新请求——但这似乎否定了双工流的好处。
简单服务器代码:
import http2 from 'http2'
const options = {
key: fs.readFileSync('./dev certificate/selfsigned.key'),
cert: fs.readFileSync('./dev certificate/selfsigned.crt'),
}
const server = http2.createSecureServer()
server.on('stream', (stream, headers) => {
stream.on('data', (chunk) => {
console.log(`server: ${chunk.toString()}`)
stream.respond({
'content-type': 'application/json',
':status': 200
})
stream.write(chunk) // echo message received
})
})
server.listen(8443)
测试客户端代码:
import http2 from 'http2'
describe('http2 messaging test', () => {
it('http2 messaging', (done) => {
const client = http2.connect('https://localhost:8443', {
rejectUnauthorized: false,
})
const msg1 = 'message 1'
const stream = client.request({
':method': 'POST',
':path': '/',
'Content-Type': 'text/plain',
'Content-Length': msg1.length,
})
stream.on('response', async (headers, flags) => {
stream.write('next message') // send the next message after response to first one
// server doesn't receive this
})
stream.write(msg1)
stream.on('data', (chunk) => {
console.log(`client: ${chunk.toString()}`)
if (chunk.toString() === 'next message') done()
})
})
})
生成ERR_HTTP2_STREAM_ERROR,因为我假设节点不支持客户端向同一个流写入两次?
是的,但是,报头只能发送一次,而不是每次通信!
更新的服务器代码:
import http2 from 'http2'
const options = {
key: fs.readFileSync('./dev certificate/selfsigned.key'),
cert: fs.readFileSync('./dev certificate/selfsigned.crt'),
}
const server = http2.createSecureServer()
server.on('stream', (stream, headers) => {
stream.respond({ // Headers is now only sent once when the stream is connected!
'content-type': 'application/json',
':status': 200
})
stream.on('data', (chunk) => {
console.log(`server: ${chunk.toString()}`)
stream.write(chunk) // echo message received
})
})
server.listen(8443)
我有一个java服务器应用程序,可以通过与多个客户端通信。在这个通道上,客户端发送请求,服务器发送应答。现在我想添加一个功能,服务器可以将文件发送到客户端。我不想通过用于通信的套接字发送,所以在一个客户端和一个服务器之间使用更多套接字是个好主意吗?如果是,如何处理?我用过这样的东西吗? 还是有更好的办法?
我想编写一个tcp服务器和客户端应用程序,在客户端使用相同端口号的情况下,它们之间有几个不同的连接。 据我所知,服务器有一个侦听器端口,当客户端调用它时,我会在服务器端为这个新连接获得一个新的套接字,当我调用它时 正当所以在服务器端,我可以识别我与这个新套接字的连接,并通过它发送数据。 现在,我的理解与客户端的问题。我打电话的时候会拿到插座 所以我只有一个插座。在 我可以指定远程地址等等。所以当我
问题内容: 这是我正在从事的项目的一部分。我有两个桌面Java应用程序,一个运行在服务器上(具有真实IP),另一个运行在客户端上。我只想从连接到服务器应用程序的网络摄像头流式传输实时视频,然后在客户端应用程序上播放它。我想从多个摄像机进行流式传输。 我一直在寻找Xuggler,JMF,Red5,VLCj之间的日子。我只是不知道应该从哪里开始,因为我刚接触编程中的媒体。 我从哪里开始有什么想法? 提
我正在开发一个Java客户机/服务器应用程序,它有一套非常具体的规则来说明我必须如何开发它。服务器创建一个实例,该实例具有到客户端套接字的输入和输出流,它们之间的任何输入和输出都由客户端GUI中的事件触发。 我现在添加了服务器端的功能,它将定期向所有连接的客户端发送更新(通过将中创建的每个对象存储在中来完成)。我需要一个等效的客户端机制来处理这些消息,并且被告知这需要在第二个客户端线程中发生,该线
问题内容: 这实际上是我在这里的第一篇文章,一段时间以来我一直在试图弄清楚这一点,但是我终于打电话给该旗帜,并将尝试寻求有关此主题的一些帮助。 因此,我有一个客户端和一个服务器,它们是根据回显客户端/服务器和安全聊天客户端/服务器建模的。我对聊天的SSL部分和使用回显仅对确保我在客户端/服务器之间收到响应不感兴趣。我将在这篇文章的底部添加所有相关代码。我现在遇到的问题是,在客户端连接后,我可以从服
问题内容: 简而言之,我有一个独立的ES主实例和一个在我的Java应用程序中创建的客户端节点。如果在客户端节点之前启动了独立ES实例,则客户端节点会正确发现独立ES实例。 我面临的问题是-如果由于某种原因,客户端节点在独立ES实例之前启动,我会看到“ MasterNotDiscoveredException”,这也是可预期的。但是,即使启动独立的ES实例后,我仍然会看到相同的异常。我应该更改一些配