» Node.js:使用Socket.IO创建Web Chat App在线聊天应用 » 2. 开发 » 2.1 初始版本

初始版本

创建 package

执行 npm init 命令为你的应用创建 package.json 文件。

npm init

这个命令会提示你输入一些内容,比如你应用的名称和版本。目前,你可以简单地按 RETURN 键接受大多数默认设置,除了入口点 entry point

咱们倾向于使用 app.js 而不是 index.js

其结果大致如下:

package name: (lr_webchat_node) 
version: (1.0.0) 
description: Chat app back-end built in node.js.
entry point: (index.js) app.js
test command: 
git repository: https://github.com/Literank/lr_webchat_node.git
keywords: socket.io,websocket
author: literank.com
license: (ISC) MIT
About to write to /Users/netdong/workspace/2023/projects/lr_webchat_node/package.json:

{
  "name": "lr_webchat_node",
  "version": "1.0.0",
  "description": "Chat app back-end built in node.js.",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/Literank/lr_webchat_node.git"
  },
  "keywords": [
    "socket.io",
    "websocket"
  ],
  "author": "literank.com",
  "license": "MIT",
  "bugs": {
    "url": "https://github.com/Literank/lr_webchat_node/issues"
  },
  "homepage": "https://github.com/Literank/lr_webchat_node#readme"
}

该命令会创建一个 package.json 文件,其用于查看管理项目依赖。

安装依赖

安装 Socket.IO:

npm i socket.io

该命令会更新 package.json 文件并在项目中自动创建一个 package-lock.json 文件。

模块式包引入

更新 package.json:

@@ -1,6 +1,7 @@
 {
   "name": "lr_webchat_node",
   "version": "1.0.0",
+  "type": "module",
   "description": "Chat app back-end built in node.js.",
   "main": "app.js",
   "scripts": {

package.json 文件中,"type": "module" 表示项目使用 ECMAScript modules(ES modules)而不是 CommonJS modules。

集成 Socket.IO

创建 app.js:

import { createServer } from "http";
import { Server } from "socket.io";

// Create a basic HTTP server
const server = createServer();
// Attach Socket.IO to the HTTP server with CORS enabled
const io = new Server(server, {
  cors: {
    origin: "*", // Access from any origin
  },
});

// Handle incoming socket connections
io.on("connection", (socket) => {
  console.log("A user connected", socket.id);
});

// Start the server
const PORT = process.env.PORT || 4000;
server.listen(PORT, () => {
  console.log("Chat Server listening on port " + PORT);
});

如下运行程序:

node app.js

将得到类似如下信息:

Chat Server listening on port 4000

你的 chat 服务器已经在 4000 端口跑起来了。