Ios GRPC Swift从客户端发送HTTPProtocolVersion

Ios GRPC Swift从客户端发送HTTPProtocolVersion,ios,swift,grpc,grpc-swift,Ios,Swift,Grpc,Grpc Swift,我正在尝试客户端服务器应用程序的GRPC Swift。 我对客户端和服务器都使用GRPC Swift 客户端是一个iPhone应用程序,我用iPhone模拟器试用过 对于客户端流式RPC,我遵循了这一点。 当我从客户端向服务器发送消息时,在控制台中从服务器收到以下错误消息 error io.grpc.server_channel_call : unable to determine http version 从中的服务器 HTTPProtocolSwitcher.swift 在函数func c

我正在尝试客户端服务器应用程序的GRPC Swift。 我对客户端和服务器都使用GRPC Swift 客户端是一个iPhone应用程序,我用iPhone模拟器试用过

对于客户端流式RPC,我遵循了这一点。 当我从客户端向服务器发送消息时,在控制台中从服务器收到以下错误消息

error io.grpc.server_channel_call : unable to determine http version
从中的服务器

HTTPProtocolSwitcher.swift

在函数
func channelRead(context:ChannelHandlerContext,data:NIOAny)
中,它正在检查
HTTPProtocolVersion
,但它丢失了

如何从客户端代码发送HTTPVersion

更新:

客户端代码

导入GRPC
导入NIO
类HTTPClient{
private let group=multi-threadedeventloopgroup(线程数:1)
专用var通道:客户端连接?
私有var客户端:ChatGuide\u ChatGuide客户端?
private var clientCall:ClientStreamingCall?
func connect(主机:字符串,端口:Int)抛出{
let channel=ClientConnection.secure(组:self.group)
.connect(主机:主机,端口:端口)
self.channel=channel
self.client=ChatGuide\u ChatGuide客户端(频道:频道)
}
func disconnect(){
做{
self.clientCall?.sendEnd(承诺:无)
_=尝试self.clientCall?.status.wait()
尝试self.group.syncShutdownGracefully()
}捕捉错误{
打印(“\(类型:self)):无法正常关闭-”,错误。localizedDescription)
}
}
func initialeclient(){
让timeAmount=timeAmount.minutes(1)
设timeLimit=timeLimit.timeout(timeAmount)
let options=CallOptions(timeLimit:timeLimit)
let call=self.client?.chat(callOptions:options)
调用?.response.whenSuccess{(消息)在
打印(“\(类型:self)):来自服务器的消息-”,Message.text)
}
调用?.response.when失败{(错误)在
打印(“\(类型:self)):响应错误-”,错误。本地化描述)
}
self.clientCall=call
}
func发送(文本:字符串){
如果self.clientCall==nil{
self.initialeclient()
}
let message=ChatGuide\u TextMessage.with{
$0.text=text
}
self.clientCall?.sendMessage(消息,承诺:无)
}
}
Hey Vignesh, 我目前正在学习GRPCSWIFT,所以我希望我能为大家服务,而不是把事情搞得一团糟

但是,在我看来,如果查看HTTP1ToGRPCServerCodec.swift文件,您并不是为了传输Protobuf数据包而配置HTTP/1.x层

我想你会对如何调整你的代码有一个更清晰的想法,很抱歉,我不能提供更多的细节,但是如果没有进一步的测试和检查代码库,我自己也不太确定

向我致以最良好的祝愿,如果我确实有所帮助,请随时与我联系

干杯, 我目前正在学习GRPCSWIFT,所以我希望我能为大家服务,而不是把事情搞得一团糟

但是,在我看来,如果查看HTTP1ToGRPCServerCodec.swift文件,您并不是为了传输Protobuf数据包而配置HTTP/1.x层

我想你会对如何调整你的代码有一个更清晰的想法,很抱歉,我不能提供更多的细节,但是如果没有进一步的测试和检查代码库,我自己也不太确定

向我致以最良好的祝愿,如果我确实有所帮助,请随时与我联系


干杯

来自我启动的不安全服务器

let server = Server.insecure(group: self.group)
我已从客户端启动安全客户端连接,如下所示:

let channel = ClientConnection.secure(group: self.group)
我得到了这个澄清 所以我让客户端连接也不安全

let channel = ClientConnection.insecure(group: self.group)

在这之后,它现在开始工作。

从我启动的不安全服务器开始

let server = Server.insecure(group: self.group)
我已从客户端启动安全客户端连接,如下所示:

let channel = ClientConnection.secure(group: self.group)
我得到了这个澄清 所以我让客户端连接也不安全

let channel = ClientConnection.insecure(group: self.group)

在此之后,它现在开始工作。

如何设置客户端流式RPC调用?您需要修改您的问题,以将所有相关代码以a的形式包含在内,以便使问题成为主题。您如何设置客户端流式RPC调用?您需要将您的问题以a的形式包含所有相关代码,以便使问题与主题相关。