吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1826|回复: 3
收起左侧

[其他转载] 【Node.JS和Socket.io】多人在线实时服务器

[复制链接]
hwx145 发表于 2022-4-1 11:51
本帖最后由 hwx145 于 2022-4-1 12:03 编辑

1.去官网  http://nodejs.cn/   下载最新的nodejs  安装完成后
2.进入你的工作目录
1. cmd
2. cd D:\多人在线实时服务器
3.  接下来使用npm命令安装express和socket.io  (第一次运行就行,会生成node_modules文件夹))
npm install --save express
npm install --save socket.io
安装成功后,看到工作目录下生成了一个名为node_modules的文件夹
4.  接下来可以开始编写服务端的代码了,新建一个文件:index.js
const express=require('express');
const app=express();
const fs=require('fs');
const port = 3000;
app.get('/', function(req, res){
        res.statusCode = 200;
        res.setHeader('Content-Type', 'text/html');
        res.write(fs.readFileSync('./public/index.html'))
        res.end();
});
app.use(express.static(__dirname+'/public'))
console.log("Server Running At:localhost:"+port);
var io=require('socket.io')().listen(app.listen(port,()=>{console.log('listening on *:3000');}));
io.sockets.on('connection',function(socket){
        socket.emit("Start_Chat");
        socket.on("Register_Name",function(data){
                socket.Register_Name=data;
                io.sockets.emit("r_name","<strong>"+data+"</strong> Hat Joined The Chat");
                socket.on("Send_msg",function(data){
                        io.sockets.emit("msg",data);
                })
        })
        socket.on('disconnect', function(){
                if(socket.Register_Name){
                        io.sockets.emit("msg","<strong>"+socket.Register_Name+"</strong> disconnect");
                }
        });
})
5.客户端代码public/index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <title> New Document </title>
  <meta name="Generator" content="EditPlus">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
</head>
<body>
<script src="socket.io/socket.io.js"></script>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<p id="stat"><strong>Status</strong>Not Connected</p>
<h2>Socket.io Chat Tutorial</h2>
<ul>
</ul>
<input id="field" placeholder="Wait...." type="text"></input>
<input type="button" value="Go" id="btn"></input>
<script>
var socket=io.connect(window.location.host);
socket.on("Start_Chat",function(){
        $("#stat").html("<strong>Status</strong>Connected");
        $("#field").attr("placeholder","Your Name..");
        $("#field").focus();
})
socket.on("disconnect",function(){
        $("#stat").html("<strong>Status</strong>Disconnected From Server Refresh!");
})
$("#btn").click(function(){
        if($("#field").attr("placeholder")=="Your Name.."){
                socket.emit("Register_Name",$("#field").val());
                $("#field").attr("data-name",$("#field").val());
                $("#field").val("");
                $("#field").attr("placeholder","Your Text..");
        }else if($("#field").attr("placeholder")=="Your Text.."){
                var thisname=$("#field").attr("data-name");
                socket.emit("Send_msg","<strong>"+thisname+"</strong>:"+$("#field").val());
                $("#field").val("");
                $("#field").focus();
        }else{
                alert("Wait");
        }
})
socket.on("r_name",function(data){
        $("ul").append("<li>"+data+"</li>");
})
socket.on("msg",function(data){
        $("ul").append("<li>"+data+"</li>");
})
function onUnloadFun(){
        if(socket){
                socket.disconnect();
        }
}
</script>
Hello Node Server Routing Is Working.
</body>
</html>
6.命令行运行node index.js,如果一切顺利,你应该会看到返回的listening on *:3000字样
5.打开http://127.0.0.1:3000/ 看到正常的欢迎页面  恭喜你,成为初级高手  会  多人在线实时服务器  的开发了。

网站效果图

网站效果图

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
TSW1024 + 2 + 1 不错,加油少年

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

laserfox 发表于 2022-4-1 14:27
Has Joined The Chat
feijun 发表于 2022-4-1 14:41
雾都孤尔 发表于 2022-4-1 14:41
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 07:39

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表