webstrom写了一个nodejs的socket.io,如果有客户端连接,则输出一条“某某客户端已连接”的日志,然后在同一项目建立一个静态网页,用前端js代码连接socket.io,运行后,在浏览器输入网址,发现后端成功输出“某某客户端已连接的日志,除浏览器外,其它程序也能作客户端连接,比如一个c# 编写的程序(入门学的vs.net),在网上找到解决方案,首先vs.net要通过NuGet下载安装一个SocketIoClientDotNet组件,说如此就能访问socket.io,但我运行了C# ,发现并没有连接上,所以nodejs的socket.io,所以如题能实现吗
nodejs、html网页前面调用 c#代码如下
nodejs
// 引入模块
var http = require('http');
var fs = require('fs');
var socketio = require('socket.io');
var server = http.createServer(function (request, response) {
// 读取HTMLPage.html
fs.readFile('index.html', function (error, data) {
response.writeHead(200, {'Content-Type': 'text/html'});
response.end(data);
});
}).listen(8080, function () {
console.log('服务器监听地址在 http://127.0.0.1:8080');
});
const io = socketio(server, {
cors: {
origin: '*', // 或者指定特定的域
methods: ["GET", "POST"],
transports: ['websocket', 'polling'],
credentials: true
}
});
io.sockets.on('connection', function (socket)
{
console.log(socket.id+"连接到服务器");
})
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>socket.io demo</title>
<script src="/socket.io/socket.io.js"></script>
<script>
var socket;
window.onload = function () {
socket = io.connect()
}
</script>
</head>
<body>
</body>
</html>
c#
using Quobject.SocketIoClientDotNet.Client;
using System;
namespace Consolesocketio
{
class Program
{
static void Main(string[] args)
{
string uri = "http://localhost:8080"; // 替换为你的socket.io服务器地址
var socket = IO.Socket(uri);
socket.On(Socket.EVENT_CONNECT, () =>
{
Console.WriteLine("Connected!");
});
socket.On("reply", (data) =>
{
Console.WriteLine("Received reply from server: " + data); // 接收服务器消息
});
socket.Connect();
Console.ReadLine();
}
}
}