Приложение 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
параметр при хостинге в иисноде.