我有一个简单的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(与这个套接字交谈。我之前在没有 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
参数。