2011-11-21 10 views
6

Estoy tratando de ejecutar este código tomado de http://coffeescriptcookbook.com incrustándolo en un html.CoffeScript: no requiere reconocimiento cuando se ejecuta desde el navegador

net = require 'net' 

domain = 'localhost' 
port = 9001 

connecting = (socket) -> 
    console.log "Connecting to real-time server" 

connection = net.createConnection port, domain 

connection.on 'connect',() -> 
    console.log "Opened connection to #{domain}:#{port}" 
    connecting connection 

connection.on 'data', (data) -> 
    console.log "Received: #{data}" 

connection.on 'end', (data) -> 
    console.log "Connection closed" 

Este es el código de archivo con el nombre client.coffe y cuando lo funciono con el comando de café: client.coffe café funciona muy bien y se conecta al servidor, pero cuando embeber en un archivo html y abierto me sale este error: UnEdge ReferenceError: require no está definido.

Mis html etiquetas script se parece a esto:

<script src="http://jashkenas.github.com/coffee-script/extras/coffee-script.js" 
     type="text/javascript" charset="utf-8" ></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js" 
     type="text/javascript" charset="utf-8"></script> 
    <script src="{% get_static_prefix %}functions.js" 
     type="text/javascript" charset="utf-8"></script> 
    <script src="{% get_static_prefix %}jquery.dajax.core.js" 
     type="text/javascript" charset="utf-8"></script> 

    <script src="{% get_static_prefix %}client.coffee" 
     type="text/coffeescript" charset="utf-8"></script> 

¿Alguna idea?

Respuesta

5

Esto no funcionará en el navegador.

Primer problema: las cosas en el navegador no están permitidas para conectarse a otros servidores o puertos por razones de seguridad. Además, no obtienes enchufes reales, solo HTTP.

Segunda edición: require es un comando Node.js sólo se podrá utilizar en Node.js (es decir, cuando se ejecuta un archivo JavaScript con el comando node o un archivo con el comando CoffeeScript coffee). El módulo net pertenece a node.js y nunca funcionará de esta manera en el navegador.

Si desea hablar con el servidor en tiempo real desde el interior del navegador, le recomiendo el módulo socket.io que utiliza websockets, sockets y HTTP (que se pueden usar desde el navegador).

+0

Gracias o la respuesta rápida, no tenía ni idea de ambas cuestiones, ya que soy nuevo en javascript. Voy a tratar de usar Connect para el servidor y yo sockets. Muchas gracias –

2

Puede usar require en un navegador con envolturas como node-browserify. Sin embargo, todos los problemas señalados por @thejh son correctos, por lo que tendrá que volver a pensar su código.

+0

Sí, parece que mi enfoque fue completamente erróneo. En este momento estoy mirando el libro llamado "CoffeeScript: accelerated javascript developmnt", que tiene un buen ejemplo del uso de io Sockts en un navegador web. Gracias por tu respuesta. –

Cuestiones relacionadas