Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过websocket js发送标题而不需要响应_Javascript_Go_Websocket_Header - Fatal编程技术网

Javascript 如何通过websocket js发送标题而不需要响应

Javascript 如何通过websocket js发送标题而不需要响应,javascript,go,websocket,header,Javascript,Go,Websocket,Header,我有一个js正在与我的go建立websocket连接,我需要发送一个jwt,所以我在标题中发送了它,但由于我的websocket没有做出响应,chrome不允许我发出请求。因此,我需要发送响应,或者以不需要响应的方式设置标题 我曾尝试在go中编写http响应,但它不起作用,而且由于安全原因,我无法在URL中发送它 客户: if(窗口[“WebSocket”]){ conn=newwebsocket(“ws://127.0.0.1:8080/trip/chat/ws?id={{trip.id}}>

我有一个js正在与我的go建立websocket连接,我需要发送一个jwt,所以我在标题中发送了它,但由于我的websocket没有做出响应,chrome不允许我发出请求。因此,我需要发送响应,或者以不需要响应的方式设置标题

我曾尝试在go中编写http响应,但它不起作用,而且由于安全原因,我无法在URL中发送它

客户:

if(窗口[“WebSocket”]){
conn=newwebsocket(“ws://127.0.0.1:8080/trip/chat/ws?id={{trip.id}}>,“{{jwt}”);
康涅狄格州议定书
conn.onclose=函数(evt){
变量项=document.createElement(“div”);
item.innerHTML=“连接已关闭。”;
附录日志(项目);
};
conn.onmessage=函数(evt){
var messages=evt.data.split('\n');
对于(var i=0;i
服务器:

func serveWs(w http.ResponseWriter,r*http.Request){
w、 写入([]字节(“Yo”))
conn,err:=升级程序。升级(w,r,nil)
如果错误!=零{
log.Println(错误)
返回
}
tknstr:=r.Header.Get(“Sec WebSocket协议”)
索赔:=GetTokenContents(tknstr)
trip,ok:=r.URL.Query()[“id”]
如果!好的{
log.Println(“缺少Url参数id”)
返回
}
id,err:=strconv.ParseInt(trip[0],10,64)
如果错误!=零{
log.Println(错误)
返回
}
日志打印(“客户制作”)
如果u,确定:=集线器[trip[0]];!确定{
hub:=newHub()
转到hub.run()
集线器[行程[0]]=集线器
}
如果claims.Username!=''&&claims.Trip==int(id){
客户端:=&client{hub:Hubs[trip[0]],conn:conn,send:make(chan Message,256),trip:int(id),claims:claims}

client.hub.register代码
w.Write([]字节(“Yo”))
发送状态为200、正文以“Yo”开头的HTTP响应。删除这一行代码。看起来客户端正试图将JWT作为子协议发送。虽然您可以通过更改服务器代码来实现这一点,但更好的方法是将JWT作为第一条消息发送。@Ceriselimon实际上我添加了这一行,因为没有它,chrome会说它需要响应。关于发送作为第一条消息,它真的像头一样安全吗?当错误
w.Write([]字节(“Yo”)时,显示Chrome报告的确切错误
已删除。错误可能与响应中缺少子策略有关。如果是这样,服务器应在握手响应中添加Sec WebSocket协议头。也就是说,您不应滥用协议头。关于消息头和头,您的安全问题是什么?您有记录其中一个而不是另一个的基础结构吗?在
集线器上有一个数据竞争
。一旦你到达使用集线器代码的位置,就用运行应用程序。@CeriseLimón问题是,在服务器连接到客户端之前,我不能发送消息,我在连接时提供消息的历史记录,我的聊天集线器是私有的。代码
w.Write([]字节(“Yo”))
发送一个HTTP响应,状态为200,正文以“Yo”开头。删除这一行代码。看起来客户端正试图将JWT作为子协议发送。虽然您可以通过更改服务器代码来实现这一点,但更好的方法是将JWT作为第一条消息发送。@Ceriselimon实际上我添加了这一行,因为没有它,chrome会说它需要响应。关于发送作为第一条消息,它真的像头一样安全吗?当错误
w.Write([]字节(“Yo”)时,显示Chrome报告的确切错误
已删除。错误可能与响应中缺少子策略有关。如果是这样,服务器应在握手响应中添加Sec WebSocket协议头。也就是说,您不应滥用协议头。关于消息头和头,您的安全问题是什么?您有记录其中一个而不是另一个的基础结构吗?
Hubs
上存在数据竞争。一旦到达使用Hubs代码的位置,就用运行应用程序。@CeriseLimón问题是,我无法发送消息,除非服务器连接到客户端,并且我在连接时提供消息的历史记录,我的聊天中心是私有的。