我有使用iisnode运行的简单nodejs服务器。

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)谈谈这个套接字。我之前在没有iisnode的情况下运行nodejs服务器,以下代码可以正常工作。

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#代码以连接到iisnode上运行的nodejs服务器。

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


不起作用。 (握手错误)

最佳答案

我不确定Socket.io C#客户端如何工作。但是,您可以在服务器端执行以下操作以使iisnode托管版本的行为与自托管版本完全相同:为应用程序创建专用网站,而不是将其托管在IIS虚拟目录中。这样,在iisnode中托管时,您无需自定义resource参数。

关于node.js - IISNode Socket.io NodeJS应用程序(使用socketio4net从C#连接),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19280019/

10-10 00:30