[英]How to make remote websocket connection to nodejs server on heroku
我正在嘗試通過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:套接字套接字關閉,原因:“傳輸錯誤”
在服務器上:
heroku [路由器]:at =錯誤代碼= H13 desc =“連接已關閉,但沒有響應”
好的,現在正在工作。 我在heroku文檔中修改了示例
我不太確定為什么我的服務器配置不起作用,但是以下內容可以起作用:
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!');
});
看起來有時會發生一個奇怪的錯誤,您應該可以通過在以下選項中添加客戶端庫的路徑來解決:
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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.