javascript-使用Node.js中的Socket.IO连接到外部服务器
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-使用Node.js中的Socket.IO连接到外部服务器,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2462字,纯文字阅读大概需要4分钟。
内容图文
背景:我有一个运行在本地主机上的node.js服务器(称为服务器A);外部服务器在https://example.net:3000上运行node.js(称为服务器B).我无法控制或无法访问服务器B(这是我家中IoT设备的仪表板站点),但是我需要使用socket.io进行连接并发出特定消息.
我可以从一个简单的javascript文件(客户端)轻松地连接到它,但是需要它在服务器端运行(最终目标是使其成为可通过HTTP请求调用的东西);以及诸如How to connect two node.js servers with websockets?之类的示例表明,我应该能够使用几乎相同的代码使用来自node.js的socket.io-client来获得相同的结果.但是,当我从node.js运行代码时,无法连接到套接字.
以下是在平面javascript文件中成功运行的代码.我知道它的工作原理是因为我在控制台中看到了“ socket connect”,而且我还可以测试套接字最后发出的套接字.
var myemail = "email@gmail.com";
var device_id = '12345';
// Create SocketIO instance, connect
var socket = io.connect('https://example.net:3000');
socket.on('connect', function(){
try {
console.log('socket connect');
socket.emit('configure', {email:myemail, deviceid:device_id});
} catch(e) {
console.log(e);
}
});
socket.emit("/" + device_id, "45678");
…下面是从node.js实例运行时无法使用的代码.我希望命令行日志中显示一条消息“ socket connect”,却一无所获.
var express=require('express');
var http=require('http');
var app=express();
var server = http.createServer(app);
//Variables
var myemail = "email@gmail.com";
var device_id = '12345';
var io = require('socket.io-client');
var socket = io.connect('https://example.net:3000');
//Connect listener
socket.on('connect', function(){
try {
console.log('socket connect');
socket.emit('configure', {email:myemail, deviceid:device_id});
} catch(e) {
console.log(e);
}
});
socket.emit("/" + device_id, "45678");
有任何想法吗?
更新
运行调试实用程序,结果包含在下面的链接图中.我看到的关键是engine.io尝试进行xhr轮询,并从服务器返回了503响应. (显然,再次不是服务器的真正“临时错误”,这全都可以通过在Chrome中运行客户端js来实现).
解决方法:
解决了这个问题-问题是我要连接的服务器必须使用https,所以我需要添加
{secure: true, rejectUnauthorized: false}
连接到的网址之后.
完整的工作示例:
const myemail = email@email.com;
const device_id = 12345;
io = require('socket.io-client');
var socket = io.connect('https://server.net:3000',{secure: true, rejectUnauthorized: false});
function doStuff(){
//Listener
socket.on('connect', function(){
try {
console.log('socket connect');
socket.emit('configure', {email:myemail, deviceid:device_id});
} catch(e) {
console.log(e);
}
});
socket.emit("/" + device_id, "003021");
}
doStuff();
内容总结
以上是互联网集市为您收集整理的javascript-使用Node.js中的Socket.IO连接到外部服务器全部内容,希望文章能够帮你解决javascript-使用Node.js中的Socket.IO连接到外部服务器所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。