当前位置: 首页 > 知识库问答 >
问题:

将Socket.io浏览器客户端连接到本地Node.js Net服务器

公良修竹
2023-03-14

我在HTTPS网站上启用了个人用户脚本。userscript使用Socket.io客户端API连接到我的PC中的Node.js TCP服务器

服务器注意到客户端正在连接到服务器,但客户端没有注意到连接,而是从浏览器控制台接收此错误

socket.on('connect', function() {
    console.log('CONNECTED TO SERVER');
    socket.on('message', function(msg) {
        messageReceive(msg);
    });
    setInterval(runRoutine, 1000);
});

我的服务器代码

var net = require('net');

var clients = [];

var port = 8841;

net.createServer(function(socket) {

    socket.name = socket.remoteAddress + ':' + socket.remotePort;
    clients.push(socket);

    broadcast(socket.name + " has connected to the server", socket);

    socket.on('message', function(data) {
        broadcast(socket.name + "<>" + data, socket);
    });

    socket.on('end', function() {
        clients.splice(clients.indexOf(socket), 1);
        broadcast(socket.name + '<>disconnected', socket);
    });

    function broadcast(message, sender) {
        console.log(message);
        clients.forEach(function(client) {
            if(client === sender) return;
            //client.write(message);
        });
    }

}).listen(port);

console.log("Chat server running at port " + port);

共有1个答案

黄逸清
2023-03-14

Javascripts不能直接从浏览器使用tcp套接字,但是websocket和http协议是可用的。如果可以的话,soccket.io使用websockets。因此,服务器端应该监听websocket连接。请参见此处的示例

 类似资料:
  • 我无法连接到我的节点。js服务器。当通过节点使用http web服务器在本地运行它时,它工作得很好,但是当连接到外部时,它会加载<code>socket.io。js文件很好,但当尝试使用套接字时,它会从URL中删除端口,无法连接。 而不是在网络请求中执行此操作: http://external-domain.com:3000/socket.io/?EIO=3 它是这样做的: http://exte

  • 我正在使用mac,版本10.14.6,Appium v 1.15和Java8。 我启动Appium作为应用程序,然后试图启动我的自动测试,但有一个失败时,Java试图创建Android驱动程序实例 查看具有功能的屏幕截图 堆栈跟踪 我想这可能是由于Mac的安全策略,因为在Windows上一切都正常。我应该如何解决该问题?

  • Lua客户机中的on connection事件被触发并打印“connected”,但Node.js socket.io服务器中的on connection事件没有被触发。我用Python套接字服务器尝试了Lua客户机,它工作得很好!我还尝试了一个带有Javascript套接字客户端的Node.js套接字服务器,它运行得很好! NodeMCU和socket.io之间是否存在兼容性问题?

  • 我有一个示例Spring启动应用程序来运行图形QL服务器,具有作为客户端,我的pom有以下依赖项: 当我尝试从客户端连接时,出现以下错误: 狩猎决议好心建议。 我还有几个问题: 我应该使用SimpleGraphQLHttpServlet将请求路由到endpoint吗 我正在React UI上使用apollo client,那么它是强制使用apollo server还是spring boot可以工作

  • 我的connect调用的结果始终是10061:连接被拒绝。 如果我将服务器代码更改为绑定到::(或者将空主机传递给getaddrinfo()(同样的事情)),并将客户机代码更改为在getaddrinfo()调用中指定空主机,那么V4客户机可以很好地连接。 谁能解释一下为什么?我没有读到任何东西,如果我们想要双套接字行为,我们必须指定一个空主机(因此使用INADDR_ANY)。这不可能是一个要求,因

  • 问题内容: 我有一个socket.io服务器正在运行,并且有一个带有socket.io.js客户端的匹配网页。一切正常。 但是,我想知道是否有可能在另一台机器上运行一个单独的node.js应用程序,该应用程序充当客户端并连接到上述的socket.io服务器? 问题答案: 使用Socket.IO-client应该可以做到这一点:https : //github.com/LearnBoost/sock