我正在尝试通过websocket连接连接到nodejs服务器,但无法正常工作。
我的server.js看起来像这样:
var app = require('express')();
var http = require('http').createServer(app);
var io = require('socket.io', {
transports: ['websocket']
})(http);
var server_port = process.env.PORT || 8080
var server_ip_address = process.env.IP || '0.0.0.0'
app.listen(server_port, server_ip_address, function () {
console.log('listening on ' + server_ip_address + ":" + server_port);
});
我的client.js(在运行nodejs的树莓派上运行)是:
var io = require('socket.io-client');
var socket = io.connect('http://<app-url>',
{
reconnect: true,
transports: ['websocket']
}
);
socket.on('connect', function(socket) {
console.log('Connected!');
});
我也尝试过openshift v2(端口8000和8443)和v3而没有运气。
如果有人最近这样做,请告诉我,谢谢!
调试客户端时,我收到消息:
engine.io-client:socket socket close,原因是:“transport error”
并在服务器上:
heroku [router]:at = error code = H13 desc =“连接无响应”
答案 0 :(得分:1)
好的,它现在正在运作。我修改了heroku docs
中的示例我不太清楚为什么我的服务器配置不起作用,但以下工作正常:
server.js
var express = require('express');
var socketIO = require('socket.io');
var path = require('path');
var PORT = process.env.PORT || 3000;
var app = express();
var server = app.listen(PORT, () => console.log(`Listening on ${ PORT }`));
var io = socketIO(server);
io.on('connection', (socket) => {
console.log('Client connected');
socket.on('disconnect', () => console.log('Client disconnected'));
});
client.js(xShirase说我需要正确的路径......)
var io = require('socket.io-client');
var socket = io.connect('https://<url>',
{reconnect: true, transports : ['websocket'], path: '/socket.io'});
socket.on('connect', function (socket) {
console.log('Connected!');
});
答案 1 :(得分:0)
看起来有时会出现一个奇怪的错误,您应该可以通过在选项中添加客户端库的路径来完成这样的操作:
var socket = io.connect('http://<app-url>:8080',
{
reconnect: true,
transports: ['websocket'],
path: "/lib/socket.io.js" //use the relevant path for your file
}
);
但是你似乎仍在使用默认选项,所以你可以这样做:
var socket = io.connect();