Приложение IISNode Socket.io NodeJS (подключение из C# с использованием socketio4net)

У меня есть простой сервер nodejs, работающий с использованием iisnode.

var app = require('http').createServer(handler);
var io = require('socket.io').listen(app);

io.configure(function () {
    io.set('transports', ['xhr-polling']);
    if (process.env.IISNODE_VERSION) {
        io.set('resource', '/nodejs/socket.io');
    }
});

function handler(req, res) {
    res.writeHead(200);
    res.end("Node JS is Running");
}

io.sockets.on('connection', function (socket) {
        console.log('a socket is connected');
    });

app.listen(process.env.PORT);

Я хочу поговорить с этим сокетом из кода C# (не JavaScript). Я работал на сервере nodejs без iisnode, и следующий код работал.

Client socket = new Client("somelink");
            socket.Error += SocketError;
            socket.On("connect", (fn) =>
                {
                    socket.Emit("new_order", 301);
                });

            socket.Connect();

Но сейчас я использую сервер iisnode и не могу подключиться с использованием того же кода. Мне пришлось изменить свой код JavaScript, чтобы подключиться к серверу тоже.

от: =>

var socket = io.connect('somelink');

к: =>

 var socket = io.connect('somelink', {resource: 'nodejs/socket.io'});

У меня вопрос, как мне изменить мой код C# для подключения к серверу nodejs, работающему на iisnode.

Client socket = new Client("somelink/nodejs/socket.io");

не работает (ошибка рукопожатия)

1 ответ

Я не уверен, как работает клиент Socket.io C#. Но одна вещь, которую вы можете сделать на стороне сервера, чтобы версия, размещенная на iisnode, работала точно так же, как и версия, размещенная на собственной машине, - это создать выделенный веб-сайт для приложения, а не размещать его в виртуальном каталоге IIS. Таким образом, вам не нужно будет настраивать resource параметр при хостинге в иисноде.

Другие вопросы по тегам