我是Bluemix I的新手,正在尝试IoT Connected Vehicle Tutorial http://m2m.demos.ibm.com/dl/iot-connected-vehicle-tutorial.pdf
一切正常,直到我尝试通过访问我的应用的链接启动地理空间分析服务: http://lm-trafficsim.eu-gb.mybluemix.net/GeospatialService_start
大约1分钟后显示:
502 Bad Gateway:已注册的端点无法处理请求。
并且日志是:
[App/0]OUTAbout to call /GeospatialService_start
[App/0]OUTNO BODY
[App/0]OUTOptions prepared: { host: 'streams-broker.eu-gb.bluemix.net',
[App/0]OUT port: '443',
[App/0]OUT headers:
[App/0]OUT method: 'PUT',
[App/0]OUT path: '/jax-rs/geo/start/service_instances/538a9b3d-7160-4235-8e47-9be62d873842/service_bindings/2709488e-2310-4628-acef-df0313877bb5',
[App/0]OUT 'Content-Type': 'application/json',
[App/0]OUT { Authorization: 'Basic YWIxM2I3ODQtMzdmZi00ZGI2LWJkYTctYTgwYzc3MmMwNDY1OjA3YjU0NzMwLWYxM2MtNGYxYi1iZjkzLWY4ZWNlMDEwNDFhYg==',
[App/0]OUTWriting json:
[App/0]OUT 'Content-Length': 448 } }
[App/0]OUTDo the GeospatialService_start call
[App/0]OUT {
[App/0]OUT "mqtt_pw": "xxxxx",
[App/0]OUT "mqtt_uid": "xxxxx",
[App/0]OUT "mqtt_client_id_notify": "a:ybv0lr:geoNotify627",
[App/0]OUT "mqtt_client_id_input": "a:ybv0lr:geoInput393",
[App/0]OUT "mqtt_uri": "ybv0lr.messaging.internetofthings.ibmcloud.com:1883",
[App/0]OUT "device_id_attr_name": "id",
[App/0]OUT "mqtt_notify_topic": "iot-2/type/api/id/geospatial/cmd/geoAlert/fmt/json",
[App/0]OUT "mqtt_input_topics": "iot-2/type/vehicle/id/+/evt/telemetry/fmt/json",
[App/0]OUT "latitude_attr_name": "lat",
[App/0]OUT "longitude_attr_name": "lng"
[App/0]OUT}
[App/0]ERR{ [Error: socket hang up] code: 'ECONNRESET' }
[App/0]OUT[0mGET /GeospatialService_start [0m- [0m- ms - -[0m
[RTR/0]OUTlm-trafficsim.eu-gb.mybluemix.net - [12/05/2016:20:47:37 +0000] "GET /GeospatialService_start HTTP/1.1" 502 0 67 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36" 159.122.215.10:19754 x_forwarded_for:"188.26.151.29" x_forwarded_proto:"http" vcap_request_id:b8812e5c-98dd-4d5a-6c2b-75780c6f0996 response_time:120.113068106 app_id:81052294-dfad-43c6-980f-1f058011632d x_global_transaction_id:"333879271"
我已经停止了我的防火墙,因为我在其他一些帖子中读到它可能会阻止访问端口,但这没有帮助。什么可能是错的想法?
与本教程的唯一区别在于我使用的地理空间分析计划是标准版,而不是免费版,因为标准版是我唯一可以选择的版本。
答案 0 :(得分:1)
您提到的PDF文章很旧。我将解释代码有什么问题以及如何解决它。
示例node.js应用程序是在Bluemix中的Geospatial Analytics服务处于测试阶段时编写的。该应用程序使用http请求来调用服务的REST API。当服务从beta切换到生产时,需要使用https进行REST API访问。该服务不再支持使用http访问REST API。这就是应用程序日志中导致ECONNRESET的原因。
要使现有代码正常工作,请在app.js源文件中更改第462行:
http = require('http'),
到:
https = require('https'),
并改变第617行:
var reqPut = http.request(options, function(res) {
到:
var reqPut = https.request(options, function(res) {
进行更改后,使用cf push
更新Bluemix中的应用程序。当应用程序重新启动时,您应该看到成功调用Geospatial Analytics REST API。
说了这么多,你还可以在http://www.ibm.com/developerworks/library/mo-connectedcar-app/index.html使用联网汽车演示文章的最终版本。这篇更新的文章除了一些其他增强和修复之外,还有jazz.net上当前应用程序代码的链接以及上面的修复。