我在玩node.js和socket.io-client。我试图连接到一个不存在的通道,以触发事件“
connect_failed”(在https://github.com/LearnBoost/socket.io-
client中
指定)。
但是我无法使事件正常运行:
var clientio = require('socket.io-client');
console.log('Trying stuff ...');
// the channel does not exist
var socket = clientio.connect( 'http://localhost:4000/news' );
// I expect this event to be triggered
socket.on('connect_error', function(){
console.log('Connection Failed');
});
socket.on('connect', function(){
console.log('Connected');
});
socket.on('disconnect', function () {
console.log('Disconnected');
});
socket.send('hi there');
如果我执行将发生这种情况:
$ node tmp_clientio.js
Trying stuff ...
如果连接到不存在的通道如何触发错误的任何想法?
更新 :重命名connect_failed
为connect_error
我遇到了同样的问题。我也曾遇到过命名空间模式的打开和关闭之间存在未记录的差异,最后我不得不使用chrome调试器来解决它。
// Bind to the news namespace, also get the underlying socket
var ns_news = clientio.connect( 'http://localhost:4000/news' );
var socket = ns_news.socket
因此,在上面看到,如果要绑定“套接字级别”事件(例如连接失败,断开连接等),则必须从名称空间获取 实际的套接字 ns_news.socket
。
// Global events are bound against socket
socket.on('connect_failed', function(){
console.log('Connection Failed');
});
socket.on('connect', function(){
console.log('Connected');
});
socket.on('disconnect', function () {
console.log('Disconnected');
});
// Your events are bound against your namespace(s)
ns_news.on('myevent', function() {
// Custom event code here
});
请注意,您现在使用ns_news发送或接收事件
ns_news.send('hi there');
最后,请确保也绑定socket.on('error', ...)
事件-如果端口不可用,则会发生该事件
我在实现中进行了此操作(尝试端口8080,如果失败,请通过nginx尝试端口80)
socket_port = 8080;
ns_dash = io.connect("http://your.gridspy.co.nz/dash", {
port: socket_port,
'connect timeout': 5000,
'flash policy port': 10843
});
socket = ns_dash.socket;
try_other_port = function() {
if (socket_port !== 80) {
if (typeof console !== "undefined" && console !== null) {
console.log("Trying other port, instead of port " + socket_port + ", attempting port 80");
}
socket_port = 80;
socket.options.port = socket_port;
socket.options.transports = ['htmlfile', 'xhr-multipart', 'xhr-polling', 'jsonp-polling'];
return socket.connect();
} else {
return typeof console !== "undefined" && console !== null ? console.log("No other ports to try.") : void 0;
}
};
socket.on('connect_failed', function() {
if (typeof console !== "undefined" && console !== null) {
console.log("Connect failed (port " + socket_port + ")");
}
return try_other_port();
});
socket.on('error', function() {
if (typeof console !== "undefined" && console !== null) {
console.log("Socket.io reported a generic error");
}
return try_other_port();
});
我还添加了一个nginx proxy_pass规则,看起来像这样
location ~ ^/(socket.io)/ {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
要升级nginx和socket.io之间的连接以支持websocket,需要使用Upgrade和Connection选项(来自nginx的最新版本)。这意味着您的网络服务器可以在端口80上支持网络套接字。
此外,如果您的服务器支持ssl / https,它将代理wss,这是websockets的安全版本。
error (对象) 错误对象 连接错误触发事件处理器。 socket.on('connect_error', (error) => { // ... });
error (对象) 错误对象 触发连接错误事件。
我一整天都在尝试让我的Nginx/React应用程序连接到我的Node.js后端,它在我的开发环境中工作得很好。我的前端和后端部署在同一个虚拟机上各自的Docker容器中。Nginx容器可以直接与Node.js容器通信,它被确认工作正常,因为其他get/post请求工作正常。 这是我最初的Nginx配置。 这是我在控制台上看到的错误: < code > POST http://domain _ n
我正在尝试使用webrtc和socket通过getUserMedia()获取音频。io将其发送到服务器(socket.io支持音频、视频、二进制数据),然后服务器将其广播到所有连接的客户端。问题是,当流到达连接的客户端时,它会转换为JSON对象,而不是媒体流对象。所以我无法发送音频,我也尝试了套接字。io流模块,但我认为未成功。您能帮我正确捕获音频流并将其发送到所有连接的客户端吗。 下面是发送数据
主要问题: 我试图在网页上打印错误,如果连接到MySQL服务器不做。为此,我写了一个错误的库名
很多企业在使用诸葛io时,会采集和分析数量非常多(可能会多达几百上千)的用户行为事件。这时,事件查找和组织就变得不够方便。 为此,诸葛io提供了事件分组和重要事件(星标事件)标注功能,当事件很多时,可以对事件进行分门别类地管理。同时,可以从产品业务角度将重要的用户行为标注出来,以便可以在分析时方便、快捷地查找常用、重要的事件。 一、使用场景 1. 在众多事件中,方便、快捷地查找重要事件 在分析过程