Socket.io 集成节点
Socket.io integration Node
嘿,我是套接字和节点的新手,正在尝试使用 socket.io 进行聊天。
这是我的 index.js 文件:
var app = require('express')();
var http = require('http').Server(app);
app.get('/', function(req, res) {
//route handler serve index.html file
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function(socket) {
console.log('A user has connected');
socket.on('disconnect', function() {
console.log("A user has disconnected");
})
})
http.listen(3000, function() {
console.log('listening on port 3000');
});
**这是我的index.html:**
<html>
<head>
<title> Chat </title>
<script src="https://cdn.socket.io/socket.io-1.0.0.js"></script>
<script>
var socket = io();
</script>
</head>
<body>
<ul id="messages"></ul>
<form action="">
<input id="m" autocomplete="off"/> <button> Send </button>
</form>
</body>
我不断收到一个引用错误,指出 io 未定义。我尝试将套接字链接为 cdn 和我的服务器 url。
您需要在服务器端加载和初始化socket.io:
var app = require('express')();
var http = require('http').Server(app);
// add this line
var io = require('socket.io')(http);
这会加载 socket.io 模块,将其注册到您的 Web 服务器以便它可以挂接到它,然后声明并分配 io
变量。
P.S。您的客户端正在链接到 socket.io 1.0.0,此时这是一个相当旧的版本。您可能应该让 socket.io 服务器通过将客户端脚本标记更改为以下内容来处理 socket.io 客户端的服务:
<script src="/socket.io/socket.io.js"></script>
这将自动为客户端提供服务器上 socket.io 的匹配版本(因此它们将始终与同一版本同步)。这是可行的,因为 require('socket.io')(app)
所做的其中一件事是它为 /socket.io/socket.io.js
.
注册了一个路由处理程序
嘿,我是套接字和节点的新手,正在尝试使用 socket.io 进行聊天。
这是我的 index.js 文件:
var app = require('express')();
var http = require('http').Server(app);
app.get('/', function(req, res) {
//route handler serve index.html file
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function(socket) {
console.log('A user has connected');
socket.on('disconnect', function() {
console.log("A user has disconnected");
})
})
http.listen(3000, function() {
console.log('listening on port 3000');
});
**这是我的index.html:**
<html>
<head>
<title> Chat </title>
<script src="https://cdn.socket.io/socket.io-1.0.0.js"></script>
<script>
var socket = io();
</script>
</head>
<body>
<ul id="messages"></ul>
<form action="">
<input id="m" autocomplete="off"/> <button> Send </button>
</form>
</body>
我不断收到一个引用错误,指出 io 未定义。我尝试将套接字链接为 cdn 和我的服务器 url。
您需要在服务器端加载和初始化socket.io:
var app = require('express')();
var http = require('http').Server(app);
// add this line
var io = require('socket.io')(http);
这会加载 socket.io 模块,将其注册到您的 Web 服务器以便它可以挂接到它,然后声明并分配 io
变量。
P.S。您的客户端正在链接到 socket.io 1.0.0,此时这是一个相当旧的版本。您可能应该让 socket.io 服务器通过将客户端脚本标记更改为以下内容来处理 socket.io 客户端的服务:
<script src="/socket.io/socket.io.js"></script>
这将自动为客户端提供服务器上 socket.io 的匹配版本(因此它们将始终与同一版本同步)。这是可行的,因为 require('socket.io')(app)
所做的其中一件事是它为 /socket.io/socket.io.js
.