首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Octoprint Javascript API套接字问题

Octoprint Javascript API套接字问题
EN

Stack Overflow用户
提问于 2017-03-23 21:06:23
回答 1查看 413关注 0票数 1

我正在使用Octoprint (http://docs.octoprint.org/en/master/jsclientlib/index.html)制作一个仪表板,为一个学校项目同时查看多台打印机。这将在一个与我的OctoPi完全独立的web服务器上运行,我一直在使用REST来获取数据,但始终无法使套接字正常工作。我发现了Javascript,并得到了基本的请求,但我想连接到套接字,以获得打印机状态的更新数据。非常简单,我在HTML中添加了以下几行代码,并进行了一些测试:

代码语言:javascript
复制
<script src="sockjs.min.js"></script> (Downloaded a copy of sockjs from their github page yesterday)
<script src="packed-client.js"></script> (Downloaded this by opening octopi.local and copying the source)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

<body>
        <div id="test_area"></div>

        <script>
                OctoPrint.options.baseurl = (my ip here);
                OctoPrint.options.apikey = (api key here);

                OctoPrint.socket.connect();

                OctoPrint.socket.onMessage("*", function(message){
                       document.getElementById('test_area').innerHTML = response;
                });
        </script>
</body>

onMessage处理程序甚至从不开火。我在Chrome中得到了这个错误:

XMLHttpRequest无法加载http://(my/sockjs/info?t=1490302299698。当请求的凭据模式为“include”时,响应中的“访问-控制-允许-原产地”标题的值不能是通配符“*”。因此,原产地'null‘不允许访问。由XMLHttpRequest发起的请求的凭据模式由withCredentials属性控制。

CORS和SockJS似乎存在问题。

以下是标题:

代码语言:javascript
复制
Request URL:http://(my ip here)/sockjs/info?t=1490302365251
Request Method:GET
Status Code:200 OK
Remote Address:(ip here):80
Referrer Policy:no-referrer-when-downgrade
Response Headers
view source
Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:*
Cache-Control:no-store, no-cache, must-revalidate, max-age=0
Content-Length:77
Content-Type:application/json; charset=UTF-8
Date:Thu, 23 Mar 2017 20:52:45 GMT
Etag:"d88498e8b1e0e1a411f64eb3eb6e219315b36ef4"
Server:TornadoServer/4.0.2
Request Headers
view source
Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Cookie:session_P80=eyJfaWQiOnsiIGIiOiJNVGRrWm1OalpEZzRZV00xTkRNd1lqZzJOMkpsWkRCbU4yWTFaR1JpTmpZPSJ9fQ.C7W5Xg.DmKIY6AJktPrR8_8Es8wa9iBc10
Host:(ip here)
Origin:null
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36

有什么办法让这件事起作用吗?这是我所能做的最基本的设置,它不能工作。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-03-27 16:53:37

好的,问题是我在浏览器中直接运行网站(通过文件://而不是通过web服务器),加上从我的更大的示例代码中复制的小错误(响应与消息变量名,加上我忘记复制在我的其他代码中的JQuery导入)。Octoprint中也有一个错误,使得订阅"*“不起作用,但根据开发人员的说法,下一个版本将有一个补丁。所以,简单地说,当一个web服务器发布时,它会得到新的软件(1.3.3)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42986983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档