为了账号安全,请及时绑定邮箱和手机立即绑定

Azure WebSocket 不适用于 Go httpPlatformHandler

Azure WebSocket 不适用于 Go httpPlatformHandler

Go
慕哥9229398 2021-11-22 15:40:19
我很难让 websocket 在 Azure Web 应用程序上运行,我目前正在将 Node 应用程序从 Azure 移植到 Go 应用程序。WebSocket 在门户上启用,这是我的 web.config<?xml version="1.0" encoding="UTF-8"?><configuration>  <system.web>        <customErrors mode="Off"/>    </system.web>    <system.webServer>        <webSocket enabled="false" />        <handlers>            <add name="httpplatformhandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />        </handlers>        <httpPlatform stdoutLogEnabled="true" processPath="d:\home\site\wwwroot\v-0.0.10.exe"                      arguments=""                      startupTimeLimit="60">            <environmentVariables>              <environmentVariable name="GOROOT" value="d:\home\site\wwwroot\go" />            </environmentVariables>        </httpPlatform>    </system.webServer></configuration>当然在本地它工作正常。起初我只试过这个样本:package mainimport (    "code.google.com/p/go.net/websocket"    "io"    "net/http"    "os")func echoHandler(ws *websocket.Conn) {    io.Copy(ws, ws)}func main() {    http.Handle("/echo", websocket.Handler(echoHandler))    http.Handle("/", http.FileServer(http.Dir(".")))    err := http.ListenAndServe(":"+os.Getevn("HTTP_PLATFORM_PORT"), nil)    if err != nil {        panic("ListenAndServe: " + err.Error())    }}在客户端,我只是尝试连接:var ws = new WebSocket("url")ws.onopen = function() { ws.send("test"); }ws.onmessage = function(e) { console.log(e.data); }在 Azure 上部署时,就绪状态始终保持为 0,永远不会调用 onopen。它最终失败,说连接出错:WebSocket connection to 'wss://***.azurewebsites.net/echo' failed: Error during WebSocket handshake: Unexpected response code: 500我什至尝试使用 Gorilla Websocket 示例来查看 Go 扩展包是否有问题。我尝试过的事情:<webSocket enabled="false" />从 web.config 中删除了[同样的问题,但在发生之前似乎需要更长的时间添加一个标准http.HandleFunc来提供“标准”页面,它工作正常。我有一些 Go 应用程序部署到 Azure,这只是我需要使用 websocket 的第一个应用程序,我想知道我做错了什么/不理解。任何帮助将不胜感激
查看完整描述

1 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

我参考了您的代码并创建了一个示例,它对我有用。我没有做任何自定义的 web.config,而是使用来自 Azure 部署脚本的默认配置。

这是示例存储库:https : //github.com/shrimpy/gowebsockettry

//img1.sycdn.imooc.com//619b49820001165911180669.jpg

查看完整回答
反对 回复 2021-11-22
  • 1 回答
  • 0 关注
  • 130 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信