You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js Socket.IO服务端无法与VB的Quobject客户端连接求助

问题排查与解决方案

一、服务端代码修复

你的Node.js服务端存在两处语法错误,会直接导致连接异常或数据推送失败:

  1. 定时器函数名错误:setTimeInterval 是拼写错误,正确应为setInterval,写错后定时器无法执行,甚至可能抛出错误中断连接。
  2. 未定义变量引用:imageBase64 未声明,你定义的变量是plateImage,需替换避免报错。

修复后的服务端代码:

const http = require('http');
const server = http.createServer();
// 注意:Quobject客户端适配Socket.IO v2.x版本,建议安装2.4.1版本避免兼容问题
const io = require('socket.io')(server);

io.on('connection', (socket) => {
  console.log('A client connected');

  socket.on('customEvent', (data) => {
    console.log('Received custom event:', data);
    socket.emit('responseEvent', 'Server says hello!');
  });
 
  let plateImage = 'base64String';
    
  // 修复定时器函数名和变量引用
  setInterval(function() {
    socket.emit('ocrData' , {cameraId : 54 , plate : '06 AFA 749' , plateImage : plateImage});
  } , 3000);

  socket.on('disconnect', () => {
    console.log('A client disconnected');
  });
});

const port = 3000;
server.listen(port, () => {
  console.log(`Server is listening on port ${port}`);
});

二、客户端代码修复

你的VB客户端存在两处关键问题:

  1. 未监听ocrData事件:虽然定义了HandleOcrData处理函数,但没有注册到socket事件中,无法接收服务端推送的OCR数据。
  2. 缺少错误监听:添加错误事件监听可以直接排查连接失败的具体原因。

修复后的客户端代码:

Imports Quobject.SocketIoClientDotNet.Client
Imports System.Threading.Tasks
Module Module1

    Sub Main()
        Dim socket = IO.Socket("http://localhost:3000")

        ' 注册所有事件处理器
        socket.On(Socket.EVENT_CONNECT, AddressOf OnConnect)
        socket.On(Socket.EVENT_DISCONNECT, AddressOf OnDisconnect)
        socket.On(Socket.EVENT_ERROR, AddressOf OnError) ' 添加错误监听
        socket.On("responseEvent", AddressOf OnResponseEvent)
        socket.On("ocrData", AddressOf HandleOcrData) ' 注册OCR数据事件

        socket.Emit("customEvent", "Custom event data")

        Console.ReadLine()
        socket.Disconnect()
    End Sub

    Private Sub OnConnect(ByVal data As Object())
        Console.WriteLine("Connected to the server")
    End Sub

    Private Sub OnDisconnect(ByVal data As Object())
        Console.WriteLine("Disconnected from the server")
    End Sub

    Private Sub OnError(ByVal data As Object())
        Console.WriteLine("Connection error: " & data(0).ToString()) ' 打印错误详情
    End Sub

    Private Sub OnResponseEvent(ByVal data As Object)
        Console.WriteLine("Received response event: " & data)
    End Sub

    Private Sub HandleOcrData(ByVal data As Object)
        Dim cameraId As Integer = Convert.ToInt32(data("cameraId"))
        Dim plate As String = data("plate").ToString()
        Dim plateImage As String = data("plateImage").ToString()

        Console.WriteLine("Received OCR data:")
        Console.WriteLine("Camera ID: " & cameraId)
        Console.WriteLine("Plate: " & plate)
        Console.WriteLine("Plate Image: " & plateImage)
    End Sub

End Module

三、版本兼容性处理

Quobject.SocketIoClientDotNet客户端仅适配Socket.IO v2.x版本,如果你的服务端安装了v3/v4版本,会出现连接无响应的情况。请安装兼容版本:

npm uninstall socket.io
npm install socket.io@2.4.1

四、验证步骤

  1. 启动修复后的Node.js服务端,确认控制台输出Server is listening on port 3000。
  2. 启动VB客户端,观察控制台是否输出Connected to the server,同时服务端控制台是否打印A client connected。
  3. 等待3秒,查看客户端是否接收到OCR数据,服务端是否正常触发定时器推送。

内容的提问来源于stack exchange,提问作者Mehmed Fatih Temiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 13:14:59