簡體   English   中英

如何在Heroku上建立到Node.js服務器的遠程WebSocket連接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM