gpt4 book ai didi

node.js socket.io 简单聊天

转载 作者:搜寻专家 更新时间:2023-10-31 22:23:41 25 4
gpt4 key购买 nike

我开始玩 node.js,和大家一样,我想聊聊。

例如,我的想法是在端口 9090 中运行带有 socket.io 的 node.js,在端口 8080 中运行我的客户端 html。我的 html 客户端将独立提供服务。

我的服务器:

var sys = require('sys');
var express = require('express');
var io = require('socket.io');

var app = express.createServer();

app.listen(8080);

var socket = io.listen(app);

socket.on('connection', function (client) {
client.on('message', function (msg) {
socket.broadcast(msg);
});
client.on('disconnect', function () {
});
});

我的客户:

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script src="http://cdn.socket.io/stable/socket.io.js"></script>
<script>
$(document).ready(function () {
var socket = new io.Socket("localhost", {port: 8080});

socket.on('connect', function () {
socket.send('A client connected.');
});
socket.on('message', function (message) {
$('div#messages').append($('<p>'), message);
});
socket.on('disconnect', function () {
console.log('disconnected');
});
socket.connect();

$('input').keydown(function (event) {
if(event.keyCode === 13) {
socket.send($('input').val());
$('input').val('');
}
});
});
</script>
</head>
<body>
<input type="text" style="width: 300px;" />
<div id="messages" style="border:solid 1px #000;">&nbsp;</div>
</body>
</html>

我在 ubuntu 11.04 中运行 node.js v0.4.10。

服务器工作正常,但客户端无法连接,在谷歌浏览器的 console.log 中我收到了这条消息:XMLHttpRequest 无法加载 http://localhost:8080/socket.io/xhr-polling//1311465961485 .产地http://localhost Access-Control-Allow-Origin 不允许。

server.js 位于/var/www/cliente/chat/public 的文件夹中。

有什么问题?

最佳答案

您的客户端代码实际上并未如您所愿地从端口 8080 获得服务。

var sys = require('sys');
var express = require('express');
var io = require('socket.io');

var app = express.createServer();
app.listen(8080);
app.use(express.static(__dirname));

app.get('/', function(req, res){
res.render('index.html', { title: 'Chat' });
});

var socket = io.listen(app);

socket.on('connection', function (client) {
client.on('message', function (msg) {
socket.broadcast(msg);
});
client.on('disconnect', function () {
});
});

这应该可以修复您的 Access-Control-Allow-Origin 错误。执行 node server.js 并连接到 http://localhost:8080 .一些额外的注意事项:

  1. 确保您已经安装了 socket.io 0.6.x,因为这是您在 html 文件中包含的内容。 0.7.x 向后不兼容。

  2. 使用此配置,您将在为页面提供服务的同一端口(而不是 9090)上运行 socket.io。

关于node.js socket.io 简单聊天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6818029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com