【发布时间】:2018-03-07 05:34:28
【问题描述】:
我创建了连接到 Socket.IO 服务器并发送/接收一些数据的 C# 应用程序。我正在使用SocketIoClientDotNet,它在 Socket.IO 服务器位于我的 localhost (windows) 上时有效。但是对于生产,Socket.IO 服务器位于远程 Debian Linux 服务器,我的应用程序无法连接到它。但是我知道远程 Socket.IO 服务器正在工作,因为我还使用 Express 模块来运行 Web 服务器,该服务器也连接到相同的 Socket.IO,只是不同的命名空间,并且连接得很好。
我正在使用此代码连接到 Socket.IO 服务器
Socket socket = IO.Socket("http://someurl:9910/client");
在两台服务器(本地和远程)上,Socket.IO 版本都是 2.0.4。
编辑
在 node.js 中的代码是这样的,所以我知道何时有人连接:
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server, {log: false, serveClient: true});
app.use('/', express.static(__dirname + '/html'));
server.listen(9910);
var ioClient = io.of('/client');
var ioManager = io.of('/manager');
ioClient.on('connection', function (socket) {
debug("Client connected", "Client connected with ID \x1b[36m"+socket.client.id+"\x1b[0m");
}
ioManager.on('connection', function (socket) {
debug("Manager connected", "Manager connected with ID \x1b[36m"+socket.client.id+"\x1b[0m");
}
还有不相关的调试功能。
在 C# Win Forms 应用程序中,它看起来像这样
using Newtonsoft.Json;
using Quobject.SocketIoClientDotNet.Client;
Socket socket;
private void frmMain_Load(object sender, EventArgs e)
{
socketConnect();
}
private void socketConnect()
{
socket = IO.Socket("http://someurl:9910/client");
}
private void socketDisconnect()
{
socket.Disconnect();
}
private void initListeners()
{
socket.On(Socket.EVENT_CONNECT, () =>
{
Console.WriteLine("SOCKET CONNECTED");
});
}
所以在我的本地服务器上我可以看到调试消息:
06.03.2018。 11:40:12:客户端连接;使用 ID SknUAgkyMg61QtfUAAAA 连接的客户端
但是在远程服务器上什么都没有发生。 除了我的一些调试消息之外,没有 C# 异常。
【问题讨论】: