簡體   English   中英

socket.io 'on' 不會被 Nodejs 服務器觸發

[英]socket.io 'on' doesn't get fired with Nodejs server

服務器.js

const express_l = require('express');
const path_l    = require('path');
const app_l     = express_l();
const http_l    = require('http');

const server_l   = http_l.createServer( app_l);

const socketio_l = require('socket.io');
const io_l = socketio_l( server_l);

app_l.use( express_l.static( path_l.join( __dirname, 'public')) );

io_l.on( "connection", argSocket => { console.log('New websocket connection!'); });

var PORT = 3000 || process.env.PORT;

server_l.listen( PORT, ()=>{ console.log(`from express server on port ${PORT}!`) });

main.js

const socket = io_l();

聊天.html

...
...
  <script src = "/socket.io/socket.io.js"> </script>
  <script src = "js/main.js"> </script>
</body>
</html>

包.json

{
  "name": "chatcord",
  "version": "1.0.0",
  "description": "Realtime chat application built with Nodejs",
  "main": "server.js",
  "scripts": {
    "start": "node server",
    "dev": "nodemon server"  
  },
  "author": "xyz",
  "license": "MIT",
  "dependencies": {
    "express": "^4.18.1",
    "moment": "^2.29.3",
    "socket.io": "^4.5.1"
  },
  "devDependencies": {
    "nodemon": "^2.0.16"
  }
}

現在,當我在瀏覽器中刷新http://localhost:3000/時,我沒有從socket.ioon函數中看到 console.log 語句。

我哪里錯了? 請指出。

你的初始化是錯誤的。 您必須創建套接字 io 服務器的新實例,然后調用它。 檢查文檔以獲取更多信息。 https://socket.io/get-started/chat#integrating-socketio

const { Server } = require("socket.io");
const io = new Server(server);

io.on('connection', (socket) => {
  console.log('a user connected');
});

希望這會有所幫助。

這是來自套接字 io 文檔https://socket.io/get-started/chat

const express = require('express');
const app = express();
const http = require('http');
const server = http.createServer(app);
const { Server } = require("socket.io");
const io = new Server(server);

io.on("connection", async (socket) => {
  console.log("someone connected to socket")
  //add listener here
  socket.on("chat",(data)=> {
    console.log(data)
  })
});

httpServer.listen(port, host, () => {
 console.log(`Server running on http://${host}:${port}`);
});


這也是發射備忘單,可能對您有用https://socket.io/docs/v3/emit-cheatsheet/

您正在 nodejs 服務器上進行安慰,因此請檢查您的終端以獲取控制台的輸出。 您需要研究在套接字中發射事件的工作原理(幫助材料

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM